Fehler bei Standardparametern in Python vermeiden
In Python kann es verlockend sein, eine leere Liste als Standardparameter zu verwenden. Dies kann jedoch aufgrund der frühen Bindung von Standardparametern zu unerwartetem Verhalten führen.
Stellen Sie sich eine Funktion wie diese vor:
def my_func(working_list=[]): working_list.append("a") print(working_list)
Zunächst funktioniert der Standardparameter wie erwartet. Nachfolgende Aufrufe aktualisieren jedoch weiterhin dieselbe Liste, was zu einer gedruckten Liste führt, die mit jedem Aufruf wächst.
Um dies zu vermeiden, testen Sie explizit, ob der Standardparameter im Funktionskörper vorhanden ist, und weisen Sie ggf. eine neue leere Liste zu notwendig:
def my_func(working_list=None): if working_list is None: working_list = [] working_list.append("a") print(working_list)
Alternativ können Sie a Einzeiler:
working_list = [] if working_list is None else working_list
Nebenbei: PEP 8 empfiehlt die Verwendung von is None für Vergleiche mit Singletons wie None. Vermeiden Sie die Verwendung von == None, da dies zu fehlerhaften Ergebnissen führen kann.
Das obige ist der detaillierte Inhalt vonWie kann ich unerwartetes Verhalten bei der Verwendung von Standardparametern in Python-Funktionen vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!