Wyjaśnienie lekcji
Po tej lekcji będziesz potrafić:
Argument domyślny nadaje parametrowi wartość, gdy wywołujący pominie ten argument:
def format_status(service, status="unknown"):
return f"{service}: {status}"format_status("worker") używa "unknown", a format_status("worker", "healthy") nadpisuje tę wartość.
Parametry bez wartości domyślnych muszą występować przed parametrami z wartościami domyślnymi:
def create_job(name, retries=3):
...Python pozwala też wywołującym przekazywać argumenty według nazwy:
create_job(name="backup", retries=5)Argumenty nazwane czynią wywołania czytelniejszymi, gdy kilka wartości ma podobne typy lub gdy trzeba nadpisać tylko jedno ustawienie opcjonalne. Ich kolejność może różnić się od kolejności parametrów, o ile każda nazwa jest poprawna i żaden argument nie zostanie podany dwa razy.
Testy funkcji mogą sprawdzać zachowanie domyślne, wywołując funkcję z mniejszą liczbą argumentów. Obecny runner zadań funkcyjnych wywołuje funkcje pozycyjnie, dlatego ta lekcja ćwiczy składnię wywołań z argumentami nazwanymi w skoncentrowanych zadaniach z kodem, a rzeczywiste testy funkcji sprawdzają jej zachowanie.
Zaawansowane tematy, takie jak *args, **kwargs, parametry wyłącznie nazwane (keyword-only) i pułapki zmiennych wartości domyślnych, należą do późniejszej jednostki „Funkcje w szczegółach”.
def cache_label(service, ttl=300):
return f"{service}: {ttl}s"
print(cache_label("api"))Wynik:
api: 300sWywołujący podaje tylko wymagany argument.
def retry_label(job, retries=3):
return f"{job}: {retries} retries"
print(retry_label("sync", 5))Wynik:
sync: 5 retriesDrugi argument zastępuje wartość domyślną.
def build_window(name, width=800, height=600):
return f"{name}: {width}x{height}"
print(build_window(name="Dashboard", height=720, width=1280))Wynik:
Dashboard: 1280x720Argumenty nazwane można podawać w innej kolejności.
def create_alert(message, level="info", channel="console"):
return f"[{level}] {channel}: {message}"
print(create_alert("Queue delayed", channel="slack"))Wynik:
[info] slack: Queue delayedNadpisany jest tylko kanał; poziom zachowuje wartość domyślną.
| Cel | Python |
|---|---|
| Zdefiniowanie parametru opcjonalnego | parameter=value |
| Użycie wartości domyślnej | Pominięcie tego argumentu |
| Nadpisanie wartości domyślnej | Podanie innej wartości |
| Uczynienie wywołania zrozumiałym samo przez się | parameter=value w wywołaniu |
| Zachowanie poprawnej sygnatury | Parametry wymagane przed parametrami z wartością domyślną |