【问题标题】:Augmented assignment in the middle of expression causes SyntaxError [duplicate]表达式中间的增强赋值导致 SyntaxError [重复]
【发布时间】:2014-05-27 17:26:09
【问题描述】:

在我的代码中,我有以下几行:

if numVotes == 0:
    avId in self.disconnectedAvIds or self.resultsStr += curStr

当我运行代码时出现此错误?

SyntaxError: illegal expression for augmented assignment

如何解决这个错误?

【问题讨论】:

  • 你想达到什么目的?您正在将布尔表达式与赋值语句混合在一起
  • 你不能这样做 += 我是你的循环

标签: python syntax-error augmented-assignment


【解决方案1】:

任务

self.resultsStr += curStr

是一个声明。 Statements can not be part of expressions。因此,请使用if-statement

if avId not in self.disconnectedAvIds:
    self.resultsStr += curStr

Python 禁止在表达式内进行赋值,因为人们认为它们经常会导致错误。例如,

if x = 0    # banned

太近了

if x == 0   # allowed

【讨论】:

    【解决方案2】:

    avId in self.disconnectedAvIds 将返回一个布尔值。 or 用于在两个布尔值之间求值,所以目前为止是正确的。

    self.resultsStr += curStr 是对变量的赋值。对变量的赋值采用lvalue = rvalue 的形式,其中lvalue 是您可以为其赋值的变量,rvalue 是某个表达式,其计算结果为lvalue 的数据类型。这不会返回布尔值,因此表达式是非法的。

    如果您想更改值 if avId is in self.disconnectedAvIds,请使用 if 语句。

    if avId in self.disconnectedAvIds:
        self.resultsStr += curStr
    

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 2017-06-20
      • 1970-01-01
      • 2020-12-20
      • 2017-07-09
      • 2019-11-29
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多