Bonjour,

j'ai un comportement que je ne comprend pas dans ce petit exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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,