我不小心写道:
total_acc =+ accuracy
而不是:
total_acc += accuracy
我在网上搜索但找不到anything。那么发生了什么,为什么Python认为我的意思是我在打字?
计算机太信任我们了。 :)子>
答案 0 :(得分:9)
如果您有兴趣尽早发现此类错误,可以使用静态代码分析来实现。例如,flake8
:
$ cat test.py
total_acc = 0
accuracy = 10
total_acc =+ accuracy
$ flake8 test.py
test.py:4:12: E225 missing whitespace around operator
在这种情况下,它抱怨+
之后的额外空格,认为你的确意味着total_acc = +accuracy
。这可以帮助您更早地发现问题。
仅供参考,pylint
也会抓住这一点。
答案 1 :(得分:6)
这与你做total_acc = -accuracy
时的情况相同,除了正面而非负面。它基本上与total_acc = accuracy
相同,因为在值之前添加+不会改变它。
这称为一元运算符,因为只有一个参数(例如:+a
)而不是两个(例如:a+b
)。
This link再解释一下。
答案 2 :(得分:2)
它认为您正在执行total_acc = +accuracy
,其中total_acc
等于accuracy
。在没有其他值的变量之前+
会导致调用变量的__pos__
方法。对于大多数类型,这是nop
,但有某些类型,例如实施__pos__
的{{3}}。