= + Python运算符在语法上是正确的

时间:2016-02-05 19:16:23

标签: python python-2.7 operators language-lawyer increment

我不小心写道:

total_acc =+ accuracy

而不是:

total_acc += accuracy

我在网上搜索但找不到anything。那么发生了什么,为什么Python认为我的意思是我在打字?

计算机太信任我们了。 :)

3 个答案:

答案 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}}。