Wenn Sie eine Funktion in Python mit einem Array-Parameter definieren, welchen Umfang hat dieser Parameter?Was ist der Umfang eines Standardparameters in Python?
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
Drucke:
Dieses Beispiel aus dem Python-Tutorial genommen
[1]
[1, 2]
[1, 2, 3]
ich nicht ganz sicher bin, ob ich verstehe, was hier passiert. Bedeutet dies, dass der Umfang des Arrays außerhalb der Funktion liegt? Warum speichert das Array seine Werte von Anruf zu Anruf? Wenn ich aus anderen Sprachen komme, würde ich dieses Verhalten nur erwarten, wenn die Variable statisch wäre. Ansonsten scheint es jedes Mal zurückgesetzt zu werden. Und tatsächlich, als ich folgendes probierte:
Ich bekam das Verhalten, das ich erwartete (das Array wurde bei jedem Anruf zurückgesetzt).
So scheint es mir, dass ich nur die Linie def f(a, L=[]):
erklärt - was ist der Umfang der L
Variable?
Siehe hier: http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument – sth
@sth - danke, die Diskussion dort ist großartig. Diese Zeile erscheint mir sehr beschreibend und hilfreich - "[Python] bindet das Standardargument bei der Funktionsdefinition und nicht bei der Ausführung der Funktion." – charlie