Почему деструктурированное расширенное назначение невозможно?
Разрушение возможно в питоне:
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
- неясно. Таким образом, деструктурированное расширенное назначение не допускается.