Använda nyckelordsargument i Python

Slutförd

Valfria argument kräver ett standardvärde som tilldelats dem. Dessa namngivna argument kallas nyckelordsargument. Nyckelordsargumentvärden måste definieras i själva funktionerna. När du anropar en funktion som definieras med nyckelordsargument är det inte nödvändigt att använda dem alls.

Apollo 11-uppdraget tog cirka 51 timmar att komma till månen. Nu ska vi skapa en funktion som returnerar den uppskattade ankomsttiden med samma värde som Apollo 11-uppdraget som standard:

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")

Funktionen använder modulen datetime för att definiera den aktuella tiden. Den används timedelta för att tillåta additionsåtgärden som resulterar i ett nytt tidsobjekt. När resultatet har beräknats returneras uppskattningen arrival formaterad som en sträng. Prova att anropa den utan argument:

arrival_time()
Arrival: Saturday 16:42

Även om funktionen definierar ett nyckelordsargument kan den inte skicka ett när du anropar en funktion. I det här fallet är variabeln hours som standard 51. Kontrollera att det aktuella datumet är korrekt genom att använda 0 som värde för hours:

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

Blanda argument och nyckelordsargument

Ibland behöver en funktion en kombination av argument och nyckelordsargument. I Python följer den här kombinationen en specifik ordning. Argument deklareras alltid först, följt av nyckelordsargument.

arrival_time() Uppdatera funktionen för att ta ett obligatoriskt argument, som är namnet på målet:

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")

Eftersom du har lagt till ett obligatoriskt argument går det inte längre att anropa funktionen utan några argument:

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

Använd "Moon" som värde för för destination att undvika felet:

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

Du kan också skicka fler än två värden, men du måste separera dem med kommatecken. Det tar cirka 8 minuter (0,13 timmar) att komma till omloppsbana, så använd det som argument:

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