comportement que je ne comprend pas
Bonjour,
j'ai un comportement que je ne comprend pas dans ce petit exemple:
Code:
1 2 3 4 5 6 7 8 9 10
| def test(toto = [0.,1.]):
toto.append(2.)
print toto
return toto
test1 = test()
print 'test1',test1
test2 = test()
print 'test2',test2 |
Pourquoi les deux appelle à la fonction test ne renvoient pas la même chose !!!
a savoir
[0.,1.,2.]
puis [0.,1.,2.,2.] !
Pour que ca fonctionne je fait
Code:
1 2 3 4 5
| def test(toto = None):
if toto == None : toto = [0.,1.]
toto.append(2.)
print toto
return toto |
On m'avait déjà donné cette astuce dans un autre cas de figure.
Quelqu'un saurait m'expliquer pourquoi la première version n'est pas correct, et pourquoi les concepteurs de python ont souhaité ceci?
Cordialement,