Почему деструктурированное расширенное назначение невозможно?

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

a, b = 1, 2

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

b += 1

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

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

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

1 ответ

Решение

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

a, b += 1, a

Как это следует оценивать? Как это

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

или просто

b = b + a
a = a + 1

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

Другие вопросы по тегам