Paramètre par défaut statique
Bonjour
Je viens de tester le code suivant
Code:
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:
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)...
???