def
Definiuje funkcję: nazwany blok kodu z parametrami, który można wywoływać wielokrotnie.
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
#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
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żyjNone. - Nazywaj funkcje czasownikami w stylu snake_case, np.
calculate_total.
Powiązane hasła
#- returnKończy funkcję i zwraca wartość do miejsca wywołania.
- lambdaKrótka funkcja anonimowa zapisana w jednym wyrażeniu.
- global i nonlocalPozwalają funkcji zmieniać zmienne z zasięgu globalnego lub funkcji otaczającej.
- yieldTworzy generator: funkcję zwracającą kolejne wartości na żądanie.
- *args i **kwargsZbieranie dowolnej liczby argumentów pozycyjnych w krotkę i nazwanych w słownik oraz rozpakowywanie kolekcji przy wywołaniu.
- DekoratoryFunkcje, które opakowują inne funkcje i dodają im zachowanie, np. logowanie lub sprawdzanie uprawnień. Zapis @nazwa.
Widzisz błąd albo brakuje przykładu? Napisz do nas.