Lekcja 9 – Funkcje

Kurs: Darmowy kurs Python dla początkujących
Lekcja 9: Funkcje

⇓ spis treści ⇓


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: