Déclaration d'affectation cumulative
L'instruction d'affectation cumulative est une combinaison d'opérations binaires et d'instructions d'affectation en une seule instruction.
>>> a = 1
>>> a = a + 1
>>> a
2
>>> a = 1
>>> def f():
... b = a + 1
... return b
...
>>> f()
2
>>> 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
>>> a = 1
>>> def f():
... global a
... a = a + 1
... return a
...
>>> f()
2
Pourquoi est-ce que j'obtiens une UnboundLocalError quand une variable a une valeur?
Selon lui, cela semble s'expliquer ainsi.
C'est parce que lorsque vous affectez à une variable dans une portée, cette variable devient locale à cette portée et masque la variable du même nom dans la portée externe.
Merci à @gotta_dive_into_python
J'expérimente que "lors de l'assignation à une variable dans une certaine portée, cette variable devient locale à cette portée" et que c'est la même chose enregistrée dans locals ()
, etc. Il y a un autre mystère dans ma maison.
>>> def f():
... a = locals()
... return a
...
>>> f()
{}
>>> def f():
... a = locals()
... b = 1
... return a
...
>>> f()
{}
>>> def f():
... a = locals()
... b = locals()
... return a
...
>>> f()
{'a': {...}}
Recommended Posts