Rozdział 13 · Automatyzacja z funkcjami
Positional-only i keyword-only
Czasami chcesz wymusić, by argument był przekazywany tylko przez nazwę (lub tylko pozycję) — sygnatura funkcji może tego wyraźnie wymagać.
Keyword-only parametry — praktyczne już teraz
Są parametry, które CHCESZ wymusić, by przekazywały się tylko z nazwy – zazwyczaj są to opcjonalne flagi lub ustawienia, gdzie pozycja „goła”
keyword_only.py
def draw_rectangle(width, height, *, color="blue", filled=False):
...
draw_rectangle(100, 50, color="red") # możesz
Single * na liście opcji
Wszystko, co stoi PO samotności
* w definicji funkcji musi być przekazywane nazwą przy wywołaniu — parametry pozycyjne nie mogą być przekazane.bez_keyword_only.py
draw_rectangle(100, 50, "red", True)
# co tu jest True? filled? Nieoczywiste.
s_keyword_only.py
draw_rectangle(
100,
50,
color="red",
filled=True,
)
# od razu widać, co jest czym
Druga opcja jest znacznie szybsza do czytania i zrozumienia — dlatego istnieją keyword-only parametrów.
Trochę głębiej – positional-only parametry
Rzadziej, ale też występuje odwrotna sytuacja: parametr, który MOŻE być przekazany tylko pozycjonalnie, bez nazwy.
positional_only.py
def function(x, /):
...
Samotny / w liście parametrów
Wszystko, co warte PRZED
/, można przekazać tylko pozycyjnie — nazwy parametru nie można używać podczas wywołania. Tak robi się, gdy autor funkcji nie chce, aby nazwa parametru stała się częścią „kontraktu” — będzie można ją swobodnie zmieniać w przyszłości, bez łamania kodu, który ją wywołuje.Anatomia pełnej sygnatury
signatura.py
def draw(
x, y, /,
width, height,
*,
color="blue",
filled=False,
):
...
Jeden podpis, trzy strefy
x, y
tylko pozycyjnie
do /
width, height
pozycjonalnie LUB po imieniu
pomiędzy / a *
color, filled
tylko z imienia
po *
Nie musisz tego zapamiętywać za pierwszym razem
To zaawansowana, ale cenna umiejętność czytania API — szczególnie przydatna przy czytaniu dokumentacji zewnętrznych bibliotek. Dla własnych małych funkcji zwykle wystarczą zwykłe parametry bez
/ i samotny * — używaj ich świadomie, gdy naprawdę poprawia czytelność wywołania.Praktyka: keyword-only parametry
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji