Kulcsszóargumentumok használata a Pythonban

Befejeződött

Az opcionális argumentumokhoz hozzá kell rendelni egy alapértelmezett értéket. Ezeket az elnevezett argumentumokat kulcsszóargumentumoknak nevezzük. A kulcsszóargumentumértékeket magukban a függvényekben kell definiálni. Ha kulcsszóargumentumokkal definiált függvényt hív meg, egyáltalán nem szükséges használni őket.

Az Apolló 11 küldetése körülbelül 51 órát vett igénybe, hogy a Holdra jusson. Hozzunk létre egy függvényt, amely az Apolló 11-küldetés alapértelmezett értékével megegyező értékkel adja vissza a becsült érkezési időt:

from datetime import timedelta, datetime

def arrival_time(hours=51):
    now = datetime.now()
    arrival = now + timedelta(hours=hours)
    return arrival.strftime("Arrival: %A %H:%M")

A függvény a modullal datetime határozza meg az aktuális időt. timedelta Ezzel engedélyezi az új időobjektumot eredményező összeadási műveletet. Az eredmény számítása után sztringként arrival formázott becslést ad vissza. Próbálja meg argumentumok nélkül meghívni:

arrival_time()
Arrival: Saturday 16:42

Annak ellenére, hogy a függvény egy kulcsszóargumentumot határoz meg, lehetővé teszi, hogy ne adjon át egyet, amikor függvényt hív meg. Ebben az esetben a változó alapértelmezés szerint a hours következő.51 Az aktuális dátum helyességének ellenőrzéséhez használja 0 a következő érték értékét hours:

arrival_time(hours=0)
Arrival: Thursday 13:42

Argumentumok és kulcsszóargumentumok keverése

Előfordulhat, hogy egy függvénynek argumentumok és kulcsszóargumentumok kombinációjára van szüksége. A Pythonban ez a kombináció egy adott sorrendet követ. Az argumentumokat mindig először deklarálja a rendszer, majd a kulcsszóargumentumokat.

Frissítse a függvényt arrival_time() egy kötelező argumentumra, amely a cél neve:

from datetime import timedelta, datetime

def arrival_time(destination, hours=51):
    now = datetime.now()
    arrival = now + timedelta(hours=hours)
    return arrival.strftime(f"{destination} Arrival: %A %H:%M")

Mivel hozzáadott egy kötelező argumentumot, már nem lehet argumentumok nélkül meghívni a függvényt:

arrival_time()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: arrival_time() missing 1 required positional argument: 'destination'

Használja "Moon" értékként destination a hiba elkerülése érdekében:

arrival_time("Moon")
Moon Arrival: Saturday 16:54

Kétnál több értéket is átadhat, de vesszővel kell elválasztania őket. Körülbelül 8 percet (0,13 órát) vesz igénybe a pályára kerülés, ezért használja ezt argumentumként:

arrival_time("Orbit", hours=0.13)
Orbit Arrival: Thursday 14:11