“函数调用”是 python 中增强赋值的非法表达式

问题描述 投票:0回答:1

我正在练习一个代码,它有......

totals = {4:0, 5:0, 6:0, 7:0, 8:0}

for _ in range(1000):
   decades = random.choice(4,5,6,7,8)
   totals(decades) += 1

最后一行给出了上面提到的语法错误。

for-loop random variable-assignment
1个回答
0
投票

您提供的代码有很多无效语法,这是您删除错误后的代码:

import random

totals = {4:0, 5:0, 6:0, 7:0, 8:0}

for _ in range(1000):
   decades = random.choice((4,5,6,7,8))
   totals[decades] += 1

现在让我们了解您遇到的错误

SyntaxError: 'function call' is an illegal expression for augmented assignment

您在这一行遇到的错误

totals(decades) += 1
在这里我非常确定您想要增加与总计字典内的特定键相对应的值,正确的方法是
totals[decades] += 1

但是,为什么你会收到语法错误?首先,如果我们从 Totals(decades) += 1 中删除赋值并简单地编写 print(totals(decades)) 这将给出一个错误

print(totals(decades))

TypeError: 'dict' object is not callable.

注意它是

Type Error
,这是程序执行期间发生的运行时错误。

但是你得到的错误是

Syntax Error
,因为Python已经禁止对临时对象进行增强赋值,所以当你使用临时对象时你不能对临时对象执行增强操作,它会抛出
Syntax Error
。这是一个
Syntax Error
意味着您正在尝试
totals(decades) += 1
修改临时对象。

演示

a = 50
def foo():
    return a

foo() += 1

foo() += 1
^
SyntaxError: 'function call' is an illegal expression for augmented assignment
© www.soinside.com 2019 - 2024. All rights reserved.