Parametry funkcji – jedna funkcja, wiele różnych danych
Materiały tej lekcji są na razie tylko do czytania na stronie. Kod przepisz albo skopiuj do swojego edytora.
Czego się nauczysz
Funkcja, która zawsze robi to samo, przydaje się rzadko. Dzięki parametrom ta sama funkcja działa na różnych danych. Przy okazji poznasz mechanizm – wartość domyślną – który w klasie piątej okaże się jednym z najczęstszych miejsc utraty punktów na egzaminie.
Po tej lekcji:
- napiszesz funkcję z dwoma parametrami i wywołasz ją kilka razy,
- wyjaśnisz różnicę między parametrem a argumentem,
- dodasz parametrowi wartość domyślną i pominiesz go przy wywołaniu,
- będziesz wiedzieć, dlaczego zmienna z wnętrza funkcji nie działa na zewnątrz.
Parametr i argument
Dwa słowa na dwie strony tej samej rzeczy:
- Parametr to nazwa w nawiasie przy definicji funkcji. Puste miejsce, które czeka na wypełnienie.
- Argument to konkretna wartość, którą podajesz przy wywołaniu.
def powitaj(imie, miasto):
print(f"{imie} z {miasto}")
powitaj("Anna", "Gdynia") # Anna z Gdynia
powitaj("Gdynia", "Anna") # Gdynia z Anna
powitaj("Anna") # TypeError!
Kolejność ma znaczenie
Pierwszy argument trafia do pierwszego parametru, drugi do drugiego. Liczy się wyłącznie kolejność.
Wywołanie z nieprawidłową liczbą argumentów kończy się błędem TypeError. Funkcja z dwoma parametrami wymaga dokładnie dwóch wartości.
Można też podać argumenty z nazwą – wtedy kolejność przestaje mieć znaczenie:
powitaj(miasto="Gdynia", imie="Anna")
Zmienne wewnątrz funkcji zostają w środku
def policz():
wynik = 42
return wynik
print(policz()) # 42
print(wynik) # NameError
Zmienna utworzona w środku funkcji przestaje istnieć w chwili jej zakończenia. Na zewnątrz nie da się do niej sięgnąć.
- To zaleta, nie ograniczenie: funkcja nie może przypadkiem zepsuć reszty programu.
- Jeśli chcesz przekazać wynik na zewnątrz, służy do tego wyłącznie
return.
Jeśli zmienna w funkcji ma taką samą nazwę jak zmienna na zewnątrz, to są dwie różne zmienne – ta w funkcji „zasłania” zewnętrzną tylko na czas działania funkcji.
Argument domyślny – parametr, który można pominąć
Jeśli po nazwie parametru dopiszesz znak równości i wartość, parametr staje się opcjonalny. Pominięty przy wywołaniu przyjmie wartość zapasową.
def powitaj(imie, slowo="Czesc"):
return f"{slowo}, {imie}!"
print(powitaj("Anna")) # Czesc, Anna!
print(powitaj("Anna", "Witaj")) # Witaj, Anna!
- Parametry z wartością domyślną muszą stać na końcu listy parametrów. Inaczej dostaniesz SyntaxError.
- Możesz mieć kilka takich parametrów naraz.
Dlaczego to jest ważniejsze, niż wygląda
Python, w odróżnieniu od C#, nie umie mieć dwóch konstruktorów. Arkusz egzaminacyjny ze stycznia 2026 zawiera osobną uwagę: w Pythonie należy utworzyć jeden konstruktor z domyślną wartością argumentu None.
Mechanizm poznajesz dziś. Zastosujesz go w klasie piątej, przy pisaniu klasy na egzamin.
Spróbuj sam
W kodzie z lekcji usuń # z linii print(wynik_lokalny) i uruchom program – zobaczysz, że zmienna z wnętrza funkcji na zewnątrz nie istnieje. Potem wywołaj funkcję przywitaj z własnym powitaniem.
Zadania z lekcji:
- Napisz funkcję
pole_prostokata(a, b)zwracającą pole. Wywołaj ją dla trzech różnych par wymiarów. - Napisz funkcję
ile_powyzej(lista, prog=4), która zwraca liczbę elementów większych od progu. Wywołaj ją raz bez drugiego argumentu i raz z argumentem 2. - Napisz funkcję
najwieksza(lista)zwracającą największy element bez używania funkcjimax. Pamiętaj, żeby zacząć od pierwszego elementu listy. - Napisz funkcję
powitaj(imie, powitanie="Czesc")i sprawdź, co się stanie, gdy zamienisz kolejność parametrów w definicji. Zapisz komunikat błędu w komentarzu.
Sprawdź się
- Napiszę funkcję z dwoma parametrami i wywołam ją kilka razy.
- Wyjaśnię różnicę między parametrem a argumentem.
- Dodam parametrowi wartość domyślną i pominę go przy wywołaniu.
- Wiem, dlaczego zmienna z wnętrza funkcji nie działa na zewnątrz.
Na następnej lekcji: dane od użytkownika. Program przestanie działać na wartościach wpisanych na sztywno i zacznie pytać osobę przy klawiaturze.
Notatki
Prezentacja
Kod
Otwórz kod, zmieniaj go i uruchamiaj na stronie – np. usuń # z linii oznaczonej jako błąd i zobacz, co się stanie. „Przywróć” wraca do wersji z lekcji.