Ich habe Python noch nicht verwendet. Ich war ein wenig süchtig danach, ohne die Spezifikationen der Standardargumente zu kennen.
Tatsächlich ist der im Standardargument angegebene Wert ** zwischengespeichert **. Wenn Sie also ** veränderbare Daten ** wie eine Liste oder ein Wörterbuch als Standardargument verwenden, ohne dies zu wissen, erhalten Sie unbeabsichtigtes Verhalten.
#a ist das Standardargument
def hoge(a=[]):
a.append('a')
print(a)
hoge() # ['a']
hoge() # ['a', 'a'] ※['a']ist nicht
Wenn Sie dies oben tun, führt der zweite Aufruf von hoge () zu ['a', 'a'] anstelle von a = ['a']. Dies liegt daran, dass ['a'] nach dem ersten Aufruf wiederverwendet wird.
Verwenden Sie ** unveränderliche ** Werte wie Keine, Zahlen, Zeichenfolgen und Taples als Standardargumente.
Wenn Sie wirklich eine Liste oder ein Wörterbuch als Standardargument verwenden möchten, verwenden Sie die folgende Methode.
def hoge(a=None):
if a is None:
a = []
a.append('a')
print(a)
hoge() # ['a']
hoge() # ['a']
Recommended Posts