Bonjour

Je viens de tester le code suivant
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> def x(a, b=[]):
...     print "avant: ", b
...     b.append(a)
...     print "après: ", b
... 
>>> 
>>> x(1)
avant:  []
après:  [1]
>>> x(2)
avant:  [1]
après:  [1, 2]
>>> x(3)
avant:  [1, 2]
après:  [1, 2, 3]
>>> x(1)
avant:  [1, 2, 3]
après:  [1, 2, 3, 1]

Quelqu'un saurait expliquer pourquoi le paramètre b (local à la fonction) se remplit et garde ses valeurs d'appels en appels et ne reprend pas sa valeur par défaut ???

Tandis que cet autre code
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> def x(a=10):
...     print a
... 
>>> 
>>> x()
10
>>> x(2)
2
>>> x()
10
>>> x(5)
5
>>> x()
10

Quasiment analogue au premier (remplissage du paramètre) fonctionne correctement (au 3° appel je vois bien que le paramètre n'a pas gardé la valeur 2 du second appel et a repris sa valeur par défaut)...

???