Supposons une fonction avec un argument par défaut modifiable :
def f(l=[]):
l.append(len(l))
return l
Si je lance ceci :
def f(l=[]):
l.append(len(l))
return l
print(f()+["-"]+f()+["-"]+f()) # -> [0, '-', 0, 1, '-', 0, 1, 2]
Ou ca:
def f(l=[]):
l.append(len(l))
return l
print(f()+f()+f()) # -> [0, 1, 0, 1, 0, 1, 2]
Au lieu du suivant, ce qui serait plus logique :
print(f()+f()+f()) # -> [0, 0, 1, 0, 1, 2]
Pourquoi?