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

=+;Python运算符在语法上是正确的,python,python-2.7,operators,language-lawyer,increment,Python,Python 2.7,Operators,Language Lawyer,Increment,我无意中写道: total_acc =+ accuracy 而不是: total_acc += accuracy 我搜索了一下网,没有找到。那么发生了什么,为什么Python认为我是指我输入的内容 计算机太信任我们了。:) 这与您要像total\u acc=-accurity那样做是一样的,除了阳性而不是阴性。它基本上与total_acc=accurity相同,因为在值之前添加+不会改变它 这称为一元运算符,因为只有一个参数(例如:+a)而不是两个参数(例如:a+b) 再解释一下。它认为你在

我无意中写道:

total_acc =+ accuracy
而不是:

total_acc += accuracy
我搜索了一下网,没有找到。那么发生了什么,为什么Python认为我是指我输入的内容


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

这与您要像
total\u acc=-accurity
那样做是一样的,除了阳性而不是阴性。它基本上与
total_acc=accurity
相同,因为在值之前添加+不会改变它

这称为一元运算符,因为只有一个参数(例如:
+a
)而不是两个参数(例如:
a+b


再解释一下。

它认为你在做
total\u acc=+accurity
,它将
total\u acc
设置为
accurity
<代码>+在没有其他值的变量导致调用该变量的方法之前。对于大多数类型,这是一个
nop
,但也有某些类型,例如,实现
\uuuu pos\uuuu

如果您有兴趣尽早捕获此类错误,您可以通过静态代码分析来实现。例如:

在本例中,它抱怨
+
后面有多余的空间,认为您实际上指的是
total\u acc=+accurity
。这会帮助您更早地发现问题


是的,这是正确的,但是在一个值调用对象的
\uuu pos\uuu()方法之前,
+
操作符会发生什么呢。大多数类型没有这样的方法,因此它是不可操作的。
Decimal
是使用它的一种类型@嗯,我不知道。很高兴知道,谢谢!我将把它添加到我的答案中。
total_acc=+accurity
total_acc=+accurity
可能的重复,从2到3没有任何变化。但是(国际海事组织)这篇文章有更好的答案。因此,我不会将此标记为dupe。(如果有更好的DUPE,那么我就没有PROP),因为您可以按您的意愿将一元操作符放入一行,您可以用<代码> TooSoSc++-+-+-+-+-+-+-+-+-+-+--精度<代码>来真正地骚扰代码审阅者。这几乎与我C++代码@ TelaNeLY中的希腊分号一样邪恶。你的回答在这里真的增添了一些特别的东西,你应该得到一张选票!
$ cat test.py
total_acc = 0
accuracy = 10

total_acc =+ accuracy
$ flake8 test.py
test.py:4:12: E225 missing whitespace around operator