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

时间:2016-11-16 23:06:01

标签: python operator-keyword

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

i = 0
while i < 10:
        i += 1
        print(i)

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

i = 0
while i < 10:
        i =+ 1
        print(i)

5 个答案:

答案 0 :(得分:26)

i+=1i=i+1相同,而 i=+1仅表示i=(+1)

答案 1 :(得分:5)

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

因此,x=+yx =+ yx = +y都是等效的,在所有情况下都会调用+上的一元y运算符并分配给{{1 }}。一元加运算符并不常用,但仅仅因为它不常见并不意味着它不被识别和接受。

为了进行比较,C / C ++等中的x“运算符”为another example where humans looking for spaces and tokenizers ignoring them causes confusion

答案 2 :(得分:2)

i =+ 1i = +1i = 1相同。

答案 3 :(得分:1)

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

有二元运算符在左侧操作数和右侧操作数上运行(例如*乘法)。
并且有一元运算符只采用右侧操作数(例如〜/!否定)。 有些运算符可以是一元和二元的。

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

Python文档:

  

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

     

一元+(加号)运算符使其数字参数保持不变。

答案 4 :(得分:0)

没有语法错误,因为表达式i =+ 1i = (+1)相同而+1完全合法。它是一元运算符,而不是加法运算符。