Dieser Artikel bietet Ihnen eine Einführung in die Verwendung von Listen als Standardparameter in Python-Funktionen. Ich hoffe, er wird Ihnen als Referenz dienen.
In diesem Artikel wird eine Falle von Python vorgestellt, auf die der Autor bei der Arbeit gestoßen ist, nämlich die Verwendung von Listen als Standardparameter.
Wir wissen, dass Listen in Python veränderbare Objekte sind, sodass sich der Inhalt der Liste innerhalb der Funktion ändern kann. Zu beachten ist auch, wie sich der Inhalt der Liste ändert, wenn eine Liste als Standardparameter einer Funktion verwendet wird.
Schauen wir uns zunächst das folgende Codebeispiel an:
def add(x, lst=[]): if x not in lst: lst.append(x) return lst def main(): list1 = add(1) print(list1) list2 = add(2) print(list2) list3 = add(3, [11, 12, 13, 14]) print(list3) list4 = add(4) print(list4) main()
Sie denken vielleicht, dass das Ausgabeergebnis wie folgt lautet:
[1] [2] [11, 12, 13, 14, 3] [4]
Aber tatsächlich ist es das Ausgabeergebnis dieses Programms ist:
[1] [1, 2] [11, 12, 13, 14, 3] [1, 2, 4]
Warum ist das so? Die Funktion der Funktion add besteht darin, x an die Liste lst anzuhängen, wenn x nicht in der Liste enthalten ist. Bei der ersten Ausführung der Funktion wird der Standardwert [] des Parameters lst erstellt. Dieser Standardwert wird nur einmal erstellt. add(1) fügt 1 zu lst hinzu. Wenn die Funktion erneut aufgerufen wird, ist lst [1] statt [], da lst nur einmal erstellt wird. Wenn die lst des Parameters [11,12,13,14] ist, ist die lst [11,12,13,14]. Wenn list4 die Funktion aufruft, werden die Standardparameter verwendet, sodass der Standardparameter lst jetzt [1,2] ist.
Um die Aufrufsituation besser zu verstehen, können Sie die ID von lst in der Add-Funktion ausgeben, z. B. den folgenden Code:
def add(x, lst=[]): print(id(lst)) if x not in lst: lst.append(x) return lst def main(): list1 = add(1) print(list1) list2 = add(2) print(list2) list3 = add(3, [11, 12, 13, 14]) print(list3) list4 = add(4) print(list4) main()
Das Ausgabeergebnis lautet wie folgt:
4469603648 [1] 4469603648 [1, 2] 4469670472 [11, 12, 13, 14, 3] 4469603648 [1, 2, 4]
Sie können sehen, list1, list2, die ID des Standardparameters hat sich beim Aufruf von list4 nicht geändert, aber die ID von list3 hat sich geändert.
Dies ist eine Falle von Python, wenn es Listen als Standardparameter verwendet. Wie kann man also vermeiden, in Fallstricke zu tappen? Wenn Sie bei jedem Aufruf der Funktion die Standardliste [] verwenden möchten, können Sie die Funktionsparameter wie im folgenden Programm ändern:
def add(x, lst=None): if lst is None: lst = [] if x not in lst: lst.append(x) return lst def main(): list1 = add(1) print(list1) list2 = add(2) print(list2) list3 = add(3, [11, 12, 13, 14]) print(list3) list4 = add(4) print(list4) main()
Das Ausgabeergebnis lautet wie folgt:
[1] [2] [11, 12, 13, 14, 3] [4]
Das obige ist der detaillierte Inhalt vonEinführung in Python mit Listen als Standardparameter in Funktionen (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!