Почему деструктурированное расширенное назначение невозможно? - PullRequest
0 голосов
/ 17 января 2019

Разрушение возможно в питоне:

a, b = 1, 2

Возможно также расширенное назначение:

b += 1

Но есть ли причина, по которой деструктурирование расширенного назначения не может быть выполнено?:

a, b += 1, 2
> SyntaxError: illegal expression for augmented assignment

Из того, что я могу сказать, деструктурирование - это вещь языка; это не может быть изменено чем-то вроде object.__add__(). Почему язык не вызывает object.__iadd__() для каждой части расширенного задания отдельно?

1 Ответ

0 голосов
/ 18 января 2019

Вероятно, это из-за неопределенного поведения в выражениях типа:

a, b += 1, a

Как это должно быть оценено?Как это

a' = a + 1
b = b + a'

или просто

b = b + a
a = a + 1

- неясно.Таким образом, деструктурированное расширенное назначение не допускается.

...