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: