表达式中间的增强赋值导致语法错误

0 投票
2 回答
1353 浏览
提问于 2025-04-18 02:37

在我的代码中,有这些行:

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

当我运行代码时,出现了这个错误?

SyntaxError: illegal expression for augmented assignment

我该如何修复这个错误呢?

2 个回答

1

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
4

这个赋值

self.resultsStr += curStr

是一个语句。语句不能作为表达式的一部分。所以,应该使用一个if语句

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

Python 不允许在表达式中进行赋值,因为这样做容易出错。比如说,

if x = 0    # banned

这太接近于

if x == 0   # allowed

撰写回答