【发布时间】:2025-12-09 09:00:01
【问题描述】:
在 python 中可以进行解构:
a, b = 1, 2
增强赋值也是可能的:
b += 1
但是有什么原因不能进行解构增强赋值吗?:
a, b += 1, 2
> SyntaxError: illegal expression for augmented assignment
据我所知,解构是一种语言。它不能被object.__add__()之类的东西修改。为什么语言不会在扩充作业的每个部分分别调用 object.__iadd__()?
【问题讨论】:
-
就个人而言,当我查看
a, b += 1, 2时,我不确定它应该做什么。(a, b) + (1, 2)等于(1, 2, 1, 2)所以我希望(a, b) += (1, 2)与(a, b) = (a, b) + (1, 2)相同,等于(a, b) = (1, 2, 1, 2)但你如何解压呢? -
可能是因为基础表达式
a,b = a,b + 1,2无效。 -
这些 cmets 很有道理,谢谢。我想我的问题是,为什么在解构规则之前应用了增强规则。
a, b += 1, 2 => a = a + 1; b = b + 2也许答案是,它可能会让人困惑。 -
我不清楚,如果允许这样的语法,如何评估像
a, b += 1, a这样的表达式。我们应该先评估a += 1,然后得到a',而不是b += a',还是只评估a += 1,b += a?看起来这是一种未定义的行为。 -
我认为@MikhailStepanov 找到了一个很好的答案来解释为什么这不起作用,谢谢!
标签: python destructuring augmented-assignment