Verwenden von Schlüsselwortargumenten in Python

Abgeschlossen

Optionale Argumente erfordern einen Ihnen zugewiesenen Standardwert. Diese benannten Argumente werden als Schlüsselwortargumente bezeichnet. Schlüsselwortargumentwerte müssen in den Funktionen selbst definiert werden. Wenn Sie eine Funktion aufrufen, die mit Schlüsselwortargumenten definiert ist, ist es überhaupt nicht erforderlich, diese zu verwenden.

Die Apollo 11-Mission benötigte ungefähr 51 Stunden, um zum Mond zu gelangen. Erstellen wir eine Funktion, die die geschätzte Ankunftszeit zurückgibt, indem wir den gleichen Wert wie die Apollo 11-Mission als Standardwert verwenden:

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

Die Funktion verwendet das datetime-Modul, um die aktuelle Uhrzeit zu definieren. Sie verwendet timedelta, um den Additionsvorgang zuzulassen, der zu einem neuen Zeitobjekt führt. Nach dem Berechnen dieses Ergebnisses wird die arrival-Schätzung als Zeichenfolge formatiert zurückgegeben. Versuchen Sie, die Funktion ohne Argumente aufzurufen:

arrival_time()
Arrival: Saturday 16:42

Obwohl die Funktion ein Schlüsselwortargument definiert, lässt sie zu, dass beim Aufrufen einer Funktion kein solches Argument übergeben wird. In diesem Fall wird für die hours-Variable standardmäßig 51 verwendet. Um zu überprüfen, ob das aktuelle Datum richtig ist, verwenden Sie 0 als Wert für hours:

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

Kombinieren von Argumenten und Schlüsselwortargumenten

Manchmal benötigt eine Funktion eine Kombination aus Argumenten und Schlüsselwortargumenten. In Python folgt diese Kombination einer bestimmten Reihenfolge. Argumente werden immer zuerst deklariert, gefolgt von Schlüsselwortargumenten.

Aktualisieren Sie die arrival_time()-Funktion, um ein erforderliches Argument anzunehmen, das dem Namen des Ziels entspricht:

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

Da Sie ein erforderliches Argument hinzugefügt haben, ist es nicht mehr möglich, die Funktion ohne Argumente aufzurufen:

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

Verwenden Sie "Moon" als Wert für destination, um den Fehler zu vermeiden:

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

Sie können auch mehr als zwei Werte übergeben, Sie müssen sie jedoch durch Kommas trennen. Es dauert ungefähr 8 Minuten (0,13 Stunden), bis die Umlaufbahn erreicht ist, verwenden Sie diese Angabe also als Argument:

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