Tout le monde sait que dans les affectations Python ne renvoient pas une valeur, sans doute pour éviter les affectations sur les déclarations if
quand habituellement juste une comparaison a pour but:valeur de l'instruction Affectation
>>> if a = b:
File "<stdin>", line 1
if a = b:
^
SyntaxError: invalid syntax
>>> if a == b:
... pass
...
Pour la même raison, on pourrait penser que plusieurs affectations sur la même déclaration étaient également des erreurs de syntaxe.
En fait, a = (b = 2)
n'est pas une expression valide:
>>> a = (b = 2)
File "<stdin>", line 1
a = (b = 2)
^
SyntaxError: invalid syntax
Alors, ma question est: pourquoi a = b = 2
fonctionne en Python comme il travaille dans d'autres langues où les instructions d'affectation ont une valeur, comme C?
>>> a = b = c = 2
>>> a, b, c
(2, 2, 2)
Ce comportement est-il documenté? Je ne pouvais rien trouvé à ce sujet dans la documentation de l'instruction d'affectation: http://docs.python.org/reference/simple_stmts.html#assignment-statements