1
def test(x, l=[]):
l.append(x)
return l
y = [1, 2, 3, 4]
r = test(7, y)
print(r)
Résultat d'exécution de 1
[1, 2, 3, 4, 7]
2
def test(x, l=[]):
l.append(x)
return l
r = test(100)
print(r)
r = test(100)
print(r)
Résultat d'exécution de 2
[100]
[100, 100]
J'avais l'intention de refaire le même processus deux fois, La deuxième fois, 100 devient deux.
Cela se produit car la liste est passée par référence. Parce que cela conduit souvent à des bugs Ne passez pas par référence, comme les listes et les dictionnaires, comme arguments par défaut.
Alors écrivez comme suit.
3
def test(x, l=None):
if l is None:
l = []
l.append(x)
return l
y = [1, 2, 3, 4]
r = test(7, y)
print(r)
r = test(100)
print(r)
r = test(100)
print(r)
Résultat d'exécution de 3
[1, 2, 3, 4, 7]
[100]
[100]