Funkcje w Pythonie są podstawowym narzędziem organizowania kodu, zwiększania jego czytelności oraz wielokrotnego użycia. Ich definiowanie odbywa się poprzez słowo kluczowe def. Poniższy artykuł omawia wszystkie najważniejsze aspekty korzystania z funkcji w Pythonie – od podstawowej składni, przez zaawansowane techniki, po dobre praktyki programistyczne.
1. Czym jest funkcja w Pythonie?
Funkcja to wyodrębniony fragment programu realizujący określone zadanie; można ją wielokrotnie wywoływać z różnymi danymi wejściowymi (parametrami). Stosowanie funkcji ułatwia:
- dzielenie programu na mniejsze, czytelne fragmenty,
- ponowne użycie kodu,
- łatwiejsze testowanie i debugowanie.
2. Składnia definicji funkcji w Pythonie
Definiowanie funkcji rozpoczyna się od słowa kluczowego def, po którym następuje:
- nazwa funkcji (najlepiej opisowa),
- nawiasy okrągłe (z listą parametrów, mogą być puste),
- dwukropek rozpoczynający blok kodu.
Każdy wiersz należący do funkcji musi być odpowiednio wcięty (najczęściej cztery spacje).
Przykład prostej funkcji –
def przywitaj():
print("Cześć!")
Funkcja z parametrami i wartością zwracaną –
def dodaj(a, b):
return a + b
- return kończy działanie funkcji i opcjonalnie zwraca wartość do miejsca wywołania.
3. Argumenty i parametry funkcji
Funkcje mogą przyjmować dowolną liczbę argumentów:
- Brak argumentów –
def powitanie(): print("Witaj użytkowniku!") - Jeden lub wiele argumentów –
def pomnoz(x, y):
return x * y
- Parametry domyślne – umożliwiają podanie wartości domyślnej, gdy argument nie zostanie przekazany.
def powitanie(imie="Gość"): print(f"Cześć, {imie}!") - Argumenty nazwane i pozycyjne – w Pythonie można przekazywać argumenty według pozycji lub przez nazwę.
- Dowolna liczba argumentów (args i kwargs) –
def suma(*args): return sum(args) def wypisz(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}")
4. Typy zwracanych wartości
Funkcja może:
- nic nie zwracać (zwraca domyślnie None);
- zwracać jedną wartość (np. liczbę, tekst);
- zwracać krotkę (czyli kilka wartości naraz):
def dzielenie_i_reszta(a, b): return a // b, a % b
5. Zakres zmiennych (scope)
- Zmienna lokalna – zadeklarowana wewnątrz funkcji, niewidoczna na zewnątrz;
- Zmienna globalna – zadeklarowana poza funkcjami, dostępna wszędzie;
Aby w funkcji zmodyfikować zmienną globalną, użyj słowa kluczowego global.
licznik = 0
def zwieksz():
global licznik
licznik += 1
6. Dokumentacja funkcji (docstring)
Pierwsza linia w ciele funkcji może być napisem dokumentacyjnym:
def suma(a, b):
"""Zwraca sumę dwóch liczb."""
return a + b
Do docstringów można się odwoływać przez help(nazwa_funkcji) lub nazwa_funkcji.__doc__.
7. Dobre praktyki i wskazówki
- Nazewnictwo – używaj opisowych nazw; trzymaj się konwencji snake_case (np. policz_sume);
- Jedna funkcja – jedno zadanie – funkcje powinny być krótkie i wykonywać pojedynczą czynność;
- Komentowane docstringiem – każda funkcja powinna mieć krótką dokumentację;
- Wcięcia – zachowuj poprawne wcięcia (najlepiej 4 spacje zgodnie z PEP8);
- Unikaj efektów ubocznych – funkcja powinna unikać modyfikowania zmiennych globalnych.
8. Wywoływanie i zastosowanie funkcji
Funkcję uruchamiasz przez podanie jej nazwy oraz ewentualnych argumentów:
dodaj(3, 5)
powitanie()
Funkcje są często używane w bardziej złożonych strukturach, np. jako argumenty innych funkcji (funkcje wyższego rzędu).
9. Zaawansowane zastosowania
- Rekurencja – funkcja wywołuje samą siebie (np. obliczanie silni);
- Funkcje anonimowe (lambda) – krótkie, jednowierszowe funkcje:
kwadrat = lambda x: x * x; - Funkcje jako obiekty – można przekazywać funkcje jako argumenty:
def zastosuj(fun, x): return fun(x).
10. Podsumowanie
Definiowanie funkcji przy pomocy def to podstawa pisania czytelnych, modularnych i łatwych w utrzymaniu programów w Pythonie. Pamiętaj o dokumentowaniu funkcji, dobrych praktykach pisania kodu oraz wykorzystywaniu elastyczności, jaką daje obsługa argumentów.
Źródła –
nofluffjobs.com
chyla.org
cscircles.cemc.uwaterloo.ca