Синтаксис для назначений дан в http://docs.python.org/reference/simple_stmts.html#assignment-statements
assignment_stmt ::= (target_list "=")+ (expression_list | yield_expression)
target_list ::= target ("," target)* [","]
target ::= identifier
| "(" target_list ")"
| "[" target_list "]"
| attributeref
| subscription
| slicing
В левой части назначения содержится один или несколько target_list
, которые являются отдельными запятыми целями.Последовательность справа распаковывается в каждую цель.Обратите внимание, что определение является рекурсивным, поэтому вы можете даже делать такие вещи, как:
a, [b, c, [d, e]], f = 1, (2, 3, (4, 5)), 6
, но на каждом уровне количество элементов и вложенность должны совпадать.Если вы используете Python 3, то есть опция для включения *target
в target_list, и это поглотит переменное количество аргументов.