'+ ='和'= +'之间的区别?

fac*_*ess 8 python operator-keyword

所以我有一段简单的代码打印出整数1-10:

i = 0
while i < 10:
        i += 1
        print(i)
Run Code Online (Sandbox Code Playgroud)

然后,如果您只是在第3行更改一个运算符,它会打印出无限量的1个整数(我明白为什么会这样做).为什么运行第二个程序时不会出现语法错误?如果赋值运算符后跟一个加法运算符,它会不会调用语法错误?

i = 0
while i < 10:
        i =+ 1
        print(i)
Run Code Online (Sandbox Code Playgroud)

Kit*_*sil 28

i+=1是相同的i=i+1,而 i=+1只是意味着i=(+1).

  • OP似乎明白这一点.问题是,为什么`+ 1`不是非法语法. (5认同)
  • @tobias_k *OP实际上有*的问题是重复的。然而,*标题*中的问题 - 这是一个完全合理的单独问题 - 由这个答案解决。这不是一个很好的情况,它显示了 Stack Overflow 的弱点,它主要由 OP 实际想要回答的问题驱动,而不是由人们注意到“库”中缺少的问题驱动。 (2认同)

Mer*_*ury 7

x=+1被视为: x=(+1)
x+=1被视为:x=x+1

有一些二元运算符可以对其左侧操作数和右侧操作数进行运算(例如 * 乘法)。
还有一些一元运算符仅采用右侧操作数(例如 ~/! 否定)。有些运算符可以是一元的,也可以是二元的。

python 中的加号也可以用作右侧运算符,就像减号一样。

Python 文档:

一元 -(减号)运算符产生其数字参数的否定。

一元 +(加)运算符产生的数字参数保持不变。


Ned*_*der 5

i =+ 1i = +1, 或相同i = 1


Sha*_*ger 5

标记符通常不需要空格,除非有必要消除歧义(例如,您需要在变量名和语言关键字之间使用空格或某种形式的标点符号,以便可以识别关键字).

因此,x=+y,x =+ yx = +y都是等价的,在调用一元所有的情况下+操作上y和分配到x.一元加运算符并不常用,但仅仅因为它并不常见并不意味着它不被识别和接受.

为了比较,-->C/C++等中的"运算符"是另一个例子,人们在寻找空格和标记符忽略它们会引起混淆.

  • `! - `也是[javascript](http://stackoverflow.com/q/34323527/1547004)中混淆的根源 (2认同)