Bei der Verwendung von Standardparametern in Python ist es wichtig, sich der frühen Bindung bewusst zu sein Verhalten, das zu unerwarteten Ergebnissen führen kann, insbesondere bei veränderlichen Standardargumenten. Dieser Artikel befasst sich mit diesem Problem und bietet eine Lösung zum Erstellen einer Funktion, die konsistent eine neue leere Liste als Standardparameter verwendet.
Bedenken Sie Folgendes Funktion:
def my_func(working_list=[]): working_list.append("a") print(working_list)
Wenn diese Funktion zum ersten Mal ohne explizites Argument aufgerufen wird, erstellt Python eine neue leere Liste als Standardwert für Arbeitsliste. Nachfolgende Aufrufe ohne explizites Argument verwenden jedoch dieselbe Liste, die beim ersten Aufruf erstellt wurde, was zu kumulativen Aktualisierungen der Liste führt.
An Um dieses Verhalten zu vermeiden, besteht die empfohlene Vorgehensweise darin, None als Standardparameter zu verwenden und dies explizit im Funktionskörper zu testen. Dies kann wie folgt erreicht werden:
def my_func(working_list=None): if working_list is None: working_list = [] # alternative: # working_list = [] if working_list is None else working_list working_list.append("a") print(working_list)
Indem Sie den Standardparameter auf „None“ setzen, wird bei jedem Aufruf der Funktion ohne explizites Argument eine neue leere Liste erstellt.
< h3>Zusätzliche Überlegungen
Die Python-Dokumentation empfiehlt die Verwendung von „None“ für Vergleiche mit „None“. Dies ist der bevorzugte Stil gemäß PEP 8, der davon abrät, Gleichheitsoperatoren (== und !=) für Vergleiche mit Singletons wie None zu verwenden.
Das obige ist der detaillierte Inhalt vonWie kann ich unerwartetes Verhalten mit veränderlichen Standardargumenten in Python vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!