UnboundLocalError dans une fonction x = 2 VS x = x + 1
Bonjour,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
>>> a = 1
>>> def f():
... return a
...
#La variable est accessible dans la function a
>>> f()
1
>>> def f():
... return a + 1
...
>>> f()
2
# On peut affecter la valeur 2 à a mais à l'exterieur de la fonction a reste egal a 1
>>> def f():
... a = 2
... return a
...
>>> f()
2
# Ca ressemble à a = 2 mais pour ce cas Python remonte une erreur, je comprends pas la vrai différence entre a = 2 et a = a + 1
>>> def f():
... a = a + 1
... return a
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in f
UnboundLocalError: local variable 'a' referenced before assignment |
Pourriez vous m'expliquer s'il vous plait la différence dans le code entre a = 2 et a = a + 1
Python n'aime pas la confusion ?
Merci, j'ai bien compris qu'il fallait mieux dorénavant donner en paramètre une variable global à une fonction pour éviter cette confusion.
Petite question :
Citation:
Envoyé par
wiztricks
Python n'aime pas cette confusion:
Existe-t-il d'autres cas où Python n'aime pas la confusion ?