Значение оператора присваивания

Всем известно, что в Python присваивания не возвращают значение, предположительно, чтобы избежать присваиваний в операторах if , когда обычно предполагается просто сравнение:

>>> if a = b:
  File "", line 1
    if a = b:
         ^
SyntaxError: invalid syntax

>>> if a == b:
...     pass
...

По той же причине, можно было предположить, что несколько присваиваний в одном и том же операторе также были синтаксическими ошибками.

На самом деле, a = (b = 2) не является допустимым выражением:

>>> a = (b = 2)
  File "", line 1
    a = (b = 2)
           ^
SyntaxError: invalid syntax

Итак, мой вопрос: почему a = b = 2 работает в Python так же, как и в других языках, где операторы присваивания имеют значение, например C?

>>> a = b = c = 2
>>> a, b, c
(2, 2, 2)

Это поведение задокументировано? Я не нашел ничего об этом в документации по оператору присваивания: http://docs.python.org/reference/simple_stmts.html#assignment-statements

16
задан jbochi 10 August 2011 в 14:46
поделиться