【问题标题】:Why chaining augmented assignment throws a SyntaxError [duplicate]为什么链接增强赋值会引发 SyntaxError [重复]
【发布时间】:2019-11-23 03:05:57
【问题描述】:

这是我在 Python3 解释器中尝试的 sn-p,

>>> x = y = 3
>>> x, y
(3, 3)
>>> x = y = 3
>>> x, y
(3, 3)
>>> x = y = y + 3
>>> x, y
(6, 6)
>>> x = y +=  3
  File "<stdin>", line 1
    x = y +=  3
           ^
SyntaxError: invalid syntax

我知道当 Python 语法不支持表达式时会出现 SyntaxError,但我无法弄清楚为什么 += 不能像 = 那样被链接。

【问题讨论】:

    标签: python python-3.x variable-assignment increment


    【解决方案1】:

    根据 python 文档 -

    除了分配给元组和多个目标 单语句,通过扩充赋值完成的赋值 语句的处理方式与正常赋值相同。

    还有,

    实际操作是就地执行的,这意味着而不是 创建一个新对象并将其分配给目标,旧对象 改为修改。

    在 python 中,赋值和扩充赋值是语句,而不是表达式,因此不能用于复杂的表达式。例如,以下是有效的 C,但在 Python 中无效:

    a += b += c
    

    参考资料:

    【讨论】:

      猜你喜欢
      • 2014-05-27
      • 2017-06-20
      • 2014-05-09
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      相关资源
      最近更新 更多