47 votes

Concaténation du résultat d'une fonction avec un argument par défaut modifiable

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?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X