Kurs: Darmowy kurs Python dla początkujących
Lekcja 9: Funkcje
Tworzenie i wywoływanie funkcji
Funkcje to kluczowy element programowania, który pozwala na organizację kodu w bloki wielokrotnego użytku. W Pythonie funkcje są tworzone za pomocą słowa kluczowego def. Funkcja może przyjmować dane wejściowe (argumenty), wykonywać operacje, a następnie zwracać wynik.
1. Podstawowa składnia funkcji
Funkcję definiujemy za pomocą słowa kluczowego def, po którym następuje nazwa funkcji, nawiasy okrągłe (w których można umieścić argumenty) oraz dwukropek. Kod wewnątrz funkcji jest wcięty, aby zaznaczyć jego przynależność do funkcji.
# Definiowanie funkcji
def przywitaj():
print("Witaj w świecie Pythona!")
Aby funkcja została wykonana, musimy ją wywołać, używając jej nazwy i nawiasów:
# Wywołanie funkcji przywitaj()
Wynik:
Witaj w świecie Pythona!
2. Funkcje z argumentami
Funkcja może przyjmować dane wejściowe w postaci argumentów. Argumenty są przekazywane w nawiasach podczas wywoływania funkcji.
# Funkcja z argumentami
def przywitaj_uzytkownika(imie):
print(f"Witaj, {imie}!")
# Wywołanie funkcji z argumentem
przywitaj_uzytkownika("Anna")
przywitaj_uzytkownika("Jan")
Wynik:
Witaj, Anna! Witaj, Jan!
3. Funkcje zwracające wartości
Funkcje mogą zwracać wynik za pomocą słowa kluczowego return. Zwracana wartość może być przypisana do zmiennej i używana w dalszym kodzie.
# Funkcja zwracająca wartość
def dodaj(a, b):
return a + b
# Wywołanie funkcji i przypisanie wyniku do zmiennej
wynik = dodaj(3, 5)
print(f"Wynik dodawania: {wynik}")
Wynik:
Wynik dodawania: 8
4. Funkcje wielokrotnego użytku
Jedną z głównych zalet funkcji jest ich wielokrotne użycie w różnych miejscach kodu. Możesz definiować funkcje dla często powtarzających się operacji:
# Funkcja obliczająca pole prostokąta
def pole_prostokata(dlugosc, szerokosc):
return dlugosc * szerokosc
# Wywołanie funkcji
pole1 = pole_prostokata(5, 10)
pole2 = pole_prostokata(3, 7)
print(f"Pole 1: {pole1}, Pole 2: {pole2}")
Wynik:
Pole 1: 50, Pole 2: 21
5. Dokumentowanie funkcji
Python pozwala na dodawanie dokumentacji funkcji w postaci docstringów, czyli tekstu umieszczonego bezpośrednio pod definicją funkcji, w potrójnych cudzysłowach. Docstringi ułatwiają zrozumienie działania funkcji.
# Funkcja z docstringiem
def dodaj(a, b):
"""
Ta funkcja dodaje dwie liczby.
Parametry:
a (int): Pierwsza liczba.
b (int): Druga liczba.
Zwraca:
int: Suma dwóch liczb.
"""
return a + b
# Wyświetlenie docstringa
help(dodaj)
Wynik:
Help on function dodaj in module __main__:
dodaj(a, b)
Ta funkcja dodaje dwie liczby.
Parametry:
a (int): Pierwsza liczba.
b (int): Druga liczba.
Zwraca:
int: Suma dwóch liczb.
6. Funkcje z domyślnymi wartościami
W funkcjach możesz ustawiać domyślne wartości dla argumentów, co pozwala na wywoływanie funkcji bez przekazywania wszystkich argumentów:
# Funkcja z domyślnymi wartościami
def powitanie(imie="Użytkowniku"):
print(f"Witaj, {imie}!")
# Wywołania funkcji
powitanie() # Używa wartości domyślnej
powitanie("Krzysztof") # Przekazano wartość
Wynik:
Witaj, Użytkowniku! Witaj, Krzysztof!
Argumenty i wartości domyślne
Argumenty to dane wejściowe przekazywane do funkcji w celu jej wykonania. Python pozwala na elastyczne definiowanie argumentów, w tym ustawianie wartości domyślnych, co sprawia, że funkcje są bardziej uniwersalne i łatwiejsze w użyciu.
1. Argumenty pozycyjne
Argumenty pozycyjne to najprostszy sposób przekazywania wartości do funkcji. Muszą być podawane w odpowiedniej kolejności, zgodnie z definicją funkcji:
# Funkcja z argumentami pozycyjnymi
def powitanie(imie, wiek):
print(f"Cześć, {imie}! Masz {wiek} lat.")
# Wywołanie funkcji z argumentami pozycyjnymi
powitanie("Anna", 25)
powitanie("Jan", 30)
Wynik:
Cześć, Anna! Masz 25 lat. Cześć, Jan! Masz 30 lat.
2. Argumenty nazwane
Argumenty nazwane pozwalają na określenie wartości argumentów na podstawie ich nazw, niezależnie od kolejności:
# Funkcja z argumentami nazwanymi
def powitanie(imie, wiek):
print(f"Cześć, {imie}! Masz {wiek} lat.")
# Wywołanie funkcji z argumentami nazwanymi
powitanie(wiek=25, imie="Anna")
powitanie(imie="Jan", wiek=30)
Wynik:
Cześć, Anna! Masz 25 lat. Cześć, Jan! Masz 30 lat.
3. Wartości domyślne argumentów
W Pythonie można ustawić domyślne wartości argumentów. Dzięki temu, jeśli podczas wywołania funkcji nie podamy wartości dla argumentu z domyślną wartością, zostanie użyta wartość domyślna:
# Funkcja z wartościami domyślnymi
def powitanie(imie="Użytkowniku", wiek=18):
print(f"Cześć, {imie}! Masz {wiek} lat.")
# Wywołanie funkcji
powitanie() # Używa wartości domyślnych
powitanie("Anna") # Podano tylko imię
powitanie(wiek=25) # Podano tylko wiek
powitanie("Jan", 30) # Podano wszystkie argumenty
Wynik:
Cześć, Użytkowniku! Masz 18 lat. Cześć, Anna! Masz 18 lat. Cześć, Użytkowniku! Masz 25 lat. Cześć, Jan! Masz 30 lat.
4. Argumenty opcjonalne
Wartości domyślne argumentów pozwalają na tworzenie funkcji, w których nie wszystkie argumenty muszą być podane podczas wywołania:
# Funkcja z opcjonalnym argumentem
def przedstawienie(imie, wiek=None):
if wiek:
print(f"Cześć, {imie}! Masz {wiek} lat.")
else:
print(f"Cześć, {imie}!")
# Wywołanie funkcji
przedstawienie("Anna", 25)
przedstawienie("Jan")
Wynik:
Cześć, Anna! Masz 25 lat. Cześć, Jan!
5. Argumenty o zmiennej liczbie wartości
Python umożliwia tworzenie funkcji, które mogą przyjmować dowolną liczbę argumentów za pomocą gwiazdek (* lub **):
*args– Przechowuje dowolną liczbę argumentów pozycyjnych jako krotkę.**kwargs– Przechowuje dowolną liczbę argumentów nazwanych jako słownik.
# Argumenty *args
def suma(*liczby):
wynik = sum(liczby)
print(f"Suma: {wynik}")
suma(1, 2, 3)
suma(10, 20, 30, 40)
# Argumenty **kwargs
def przedstawienie(**dane):
for klucz, wartosc in dane.items():
print(f"{klucz}: {wartosc}")
przedstawienie(imie="Anna", wiek=25, miasto="Kraków")
Wynik:
Suma: 6 Suma: 100 imie: Anna wiek: 25 miasto: Kraków
6. Łączenie argumentów pozycyjnych, nazwanych i domyślnych
W jednej funkcji można używać różnych typów argumentów. Ważne jest jednak zachowanie kolejności: najpierw argumenty pozycyjne, potem *args, a na końcu **kwargs.
# Łączenie argumentów
def funkcja(a, b=10, *args, **kwargs):
print(f"a: {a}, b: {b}")
print(f"args: {args}")
print(f"kwargs: {kwargs}")
# Wywołanie funkcji
funkcja(5, 15, 20, 25, imie="Anna", wiek=30)
Wynik:
a: 5, b: 15
args: (20, 25)
kwargs: {'imie': 'Anna', 'wiek': 30}
Funkcje anonimowe (lambda)
Funkcje anonimowe, znane jako funkcje lambda, to krótkie i proste funkcje w Pythonie, które nie mają nazwy. Są one szczególnie przydatne, gdy potrzebujemy szybko zdefiniować jednorazową funkcję w miejscu, gdzie nie jest wymagana pełna definicja funkcji za pomocą def.
1. Składnia funkcji lambda
Składnia funkcji lambda jest następująca:
lambda argumenty: wyrażenie
Funkcja lambda może przyjmować dowolną liczbę argumentów, ale zawsze zwraca wynik pojedynczego wyrażenia.
# Przykład funkcji lambda
dodaj = lambda a, b: a + b
# Wywołanie funkcji lambda
wynik = dodaj(5, 3)
print(f"Wynik dodawania: {wynik}")
Wynik:
Wynik dodawania: 8
2. Użycie funkcji lambda w praktyce
Funkcje lambda są często używane jako argumenty innych funkcji, takich jak map(), filter(), czy sorted(). Dzięki nim można definiować logikę w miejscu wywołania funkcji.
3. lambda z funkcją map()
Funkcja map() stosuje podaną funkcję do każdego elementu sekwencji i zwraca nową sekwencję. Przykład użycia lambda z map():
# Podniesienie każdej liczby do kwadratu liczby = [1, 2, 3, 4, 5] kwadraty = list(map(lambda x: x ** 2, liczby)) print(kwadraty)
Wynik:
[1, 4, 9, 16, 25]
4. lambda z funkcją filter()
Funkcja filter() filtruje elementy sekwencji na podstawie funkcji zwracającej wartość True lub False. Przykład:
# Filtracja liczb parzystych liczby = [1, 2, 3, 4, 5, 6] parzyste = list(filter(lambda x: x % 2 == 0, liczby)) print(parzyste)
Wynik:
[2, 4, 6]
5. lambda z funkcją sorted()
Funkcja sorted() może używać funkcji lambda jako klucza do sortowania (argument key). Przykład:
# Sortowanie listy krotek według drugiego elementu pary = [(1, 3), (2, 2), (4, 1)] posortowane = sorted(pary, key=lambda x: x[1]) print(posortowane)
Wynik:
[(4, 1), (2, 2), (1, 3)]
6. Ograniczenia funkcji lambda
Chociaż funkcje lambda są przydatne, mają pewne ograniczenia:
- Mogą zawierać tylko jedno wyrażenie (nie mogą mieć wielu instrukcji).
- Są mniej czytelne w przypadku skomplikowanych operacji.
- Nie można do nich dodać dokumentacji (docstring).
7. Przykłady praktyczne
Kalkulator dodający i mnożący liczby za pomocą funkcji lambda:
# Kalkulator z funkcjami lambda dodaj = lambda a, b: a + b mnoz = lambda a, b: a * b print(dodaj(3, 5)) # Wynik: 8 print(mnoz(4, 6)) # Wynik: 24
8. Wskazówki dotyczące stosowania funkcji lambda
Funkcje lambda najlepiej stosować do prostych operacji, zwłaszcza gdy używane są jako argumenty funkcji takich jak map(), filter() lub sorted(). W bardziej złożonych przypadkach lepiej jest używać funkcji definiowanych za pomocą def.
Następna lekcja ==> Praca z plikami
Spis Treści - darmowy kurs Python dla początkujących
Lekcja 1: Wprowadzenie do programowania
- Co to jest programowanie?
- Dlaczego warto uczyć się Pythona?
- Instalacja Python i wprowadzenie do edytorów (IDLE, VS Code).
Lekcja 2: Pierwszy program w Pythonie
- Składnia Pythona.
- Wyświetlanie tekstu (funkcja print).
- Komentarze i ich znaczenie.
Lekcja 3: Podstawowe typy danych
- Liczby: int, float.
- Ciągi znaków (stringi).
- Typ logiczny (boolean).
- Funkcja type.
Lekcja 4: Zmienne i operatory
- Deklaracja i przypisywanie zmiennych.
- Operatory arytmetyczne, porównania, logiczne.
Lekcja 5: Listy i krotki
- Tworzenie list i krotek.
- Indeksowanie, dodawanie, usuwanie elementów.
- Operacje na listach.
Lekcja 6: Słowniki i zbiory
- Tworzenie i operacje na słownikach.
- Iteracja po słownikach.
- Zbiory i ich zastosowania.
Lekcja 7: Instrukcje warunkowe
- Instrukcje if, elif, else.
- Operatory logiczne w praktyce.
Lekcja 8: Pętle
- Pętla for i while.
- Instrukcje break, continue, else w pętlach.
Lekcja 9: Funkcje
- Tworzenie i wywoływanie funkcji.
- Argumenty i wartości domyślne.
- Funkcje anonimowe (lambda).
Lekcja 10: Praca z plikami
- Otwieranie, czytanie i zapisywanie plików.
- Obsługa błędów przy pracy z plikami.
Lekcja 11: Podstawy programowania obiektowego
- Klasy i obiekty.
- Atrybuty i metody.
- Prosty projekt: Zarządzanie listą zadań.
Lekcja 12: Tworzenie prostego kalkulatora
- Łączenie funkcji i warunków.
- Obsługa błędów (try-except).
Lekcja 13: Zarządzanie plikami tekstowymi
- Program do przechowywania i wyszukiwania notatek w plikach.
Lekcja 14: Prosta gra tekstowa w Python
- Wprowadzenie do pętli i logiki gry.
- Interaktywna gra konsolowa, np. zgadywanie liczby.
Jeśli chciałbyś być poinformowany o następnych kursach to zapisz się do naszego newslettera:
