def

Definiuje funkcję: nazwany blok kodu z parametrami, który można wywoływać wielokrotnie.

Na tej stronie

Przykład

#
Python
def award(name, exp=10, reason=None):
    """Zwraca opis przyznanych punktów."""
    text = f"{name}: +{exp} EXP"
    if reason:
        text += f" ({reason})"
    return text

print(award("Ania"))
print(award("Kuba", 25, reason="moduł ukończony"))
Wynikzapisany wynik, możesz go sprawdzić
Ania: +10 EXP
Kuba: +25 EXP (moduł ukończony)

Definicja i zastosowanie

#

Słowo def tworzy funkcję. Po nazwie w nawiasach podajesz parametry, a po dwukropku wcięty blok kodu. Funkcję wywołujesz, pisząc jej nazwę z nawiasami i argumentami.

Parametry mogą mieć wartości domyślne (exp=10). Argumenty można przekazywać po kolei albo po nazwie (award(name="Ania", exp=20)), co zwiększa czytelność przy wielu parametrach.

Zapis *args zbiera dowolną liczbę argumentów pozycyjnych w krotkę, a **kwargs argumentów nazwanych w słownik. Pierwsza linia funkcji może być napisem dokumentacyjnym (docstring), który opisuje jej działanie.

Składnia

#
Składnia
def nazwa(parametr, domyslny=wartosc, *args, **kwargs):
    ...

Więcej przykładów

#
*args i **kwargs
Python
def summary(*scores, **info):
    avg = sum(scores) / len(scores)
    return f"{info.get('name', 'Uczeń')}: średnia {avg:.1f} z {len(scores)} testów"

print(summary(80, 95, 70, name="Ola"))
Wynikzapisany wynik, możesz go sprawdzić
Ola: średnia 81.7 z 3 testów
Pułapka z mutowalną wartością domyślną
Python
def add_task(task, tasks=None):
    if tasks is None:
        tasks = []
    tasks.append(task)
    return tasks

print(add_task("HTML"))
print(add_task("CSS"))
Wynikzapisany wynik, możesz go sprawdzić
['HTML']
['CSS']

Dobre praktyki

#
  • Nie używaj mutowalnych wartości domyślnych, jak [] czy {}. Są tworzone raz i współdzielone między wywołaniami. Użyj None.
  • Nazywaj funkcje czasownikami w stylu snake_case, np. calculate_total.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.