python - 不可能在 python 中执行 (a, b) += (1, 2)?

标签 python

以下行似乎不起作用:

(count, total) += self._GetNumberOfNonZeroActions((state[0] + x, state[1] - ring, state[2]))

我想在这种情况下不可能使用 += 运算符。我想知道为什么?

编辑:实际上我想要的是添加到变量计数和总计由该函数返回的元组给出的值。现在我想起来了,允许 (a, b) += (1, 2) 是没有意义的,因为它会创建一个新的元组,对吧?

换句话说,有没有办法简化这个?

    res = self._GetNumberOfNonZeroActions((state[0] + x, state[1] + ring, state[2]))
    count, total = res[0], res[1]

最佳答案

您的观察是正确的:a += b 对于任何 a 和 b 意味着与 a = a + b 相同(除了它可能会保存对 a 的一次评估).所以如果 a 是一个元组,那么唯一可以 += 的是另一个元组;如果 a 是一个临时的未命名元组,那么 += 当然是不可观察的——Python 通过将这种特殊情况捕获为语法错误来帮助您解决问题。在 += 之前,您需要给元组一个名称(或其他可重新分配的引用)...:

>>> thetup = (a, b)
>>> thetup += (1, 2)
>>> thetup
(23, 45, 1, 2)

如果语法 (a, b) += (1, 2) 被接受,它当然必须暗示相同的功能......但没有任何可能的可观察方法来检查附加实际上发生了,这真的没有任何意义。幸好语法不被接受,因此!-)

关于python - 不可能在 python 中执行 (a, b) += (1, 2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1871786/

相关文章:

python - 对象没有属性 'build_absolute_uri' - Django Rest Framework

python - 使用 ESMTP 和 Twisted to GMail 发送电子邮件就在那里(没有错误或任何东西)

python - 使用 ngram 范围进行标记化

python - 从外部主机文件设置结构主机列表

python - 从包中导入所有模块

python - 如何在 Django 中只打印当前登录的用户数据?

python - 切片并找到体积

python - 简单的网页更改或按钮删除和抓取的数据是无用的

python - 从 CSV 文件绘制 Pandas 框架

python - 非常奇怪的 numpy 数组浮点行为