所以我有一段简单的代码,打印出整数1-10:'+ ='和'= +'之间的区别?
i = 0
while i < 10:
i += 1
print(i)
然后,如果你只是改变周围的一个操作员在3号线,它打印出的1个整数无限量(这是我理解它为什么这样做)。为什么运行第二个程序时不会出现语法错误?如果赋值运算符后面跟着一个加法运算符,它会不会调用语法错误?
i = 0
while i < 10:
i =+ 1
print(i)
所以我有一段简单的代码,打印出整数1-10:'+ ='和'= +'之间的区别?
i = 0
while i < 10:
i += 1
print(i)
然后,如果你只是改变周围的一个操作员在3号线,它打印出的1个整数无限量(这是我理解它为什么这样做)。为什么运行第二个程序时不会出现语法错误?如果赋值运算符后面跟着一个加法运算符,它会不会调用语法错误?
i = 0
while i < 10:
i =+ 1
print(i)
i+=1
与i=i+1
相同。 i=+1
只是表示i=(+1)
。
OP似乎明白这一点。问题是,为什么'+ 1'不是非法的语法。 –
i =+ 1
相同i = +1
,或i = 1
。
Tokenizers通常不需要空格,除非有必要消除歧义(例如,您需要空格或变量名和语言关键字之间的某种形式的标点符号,以便可以识别关键字)。
因此,x=+y
,x =+ y
和x = +y
都是等价的,在调用上y
一元+
操作者和分配给x
所有的情况下。一元加运算符不常用,但仅仅因为它不常见并不意味着它不被识别和接受。
作为比较,C/C++等中的-->
“运算符”是another example where humans looking for spaces and tokenizers ignoring them causes confusion。
'! - '也是[javascript]中一些混淆的源头(http:// stackoverflow。com/q/34323527/1547004) –
没有语法错误,因为表达式i =+ 1
与i = (+1)
相同,而+1
是完全合法的。它是一个一元运算符,不是加法运算符。 x=(+1)
而x+=1
被视为:x=x+1
有其自己的左操作数handside和它们的右手侧的操作数(例如*乘法)操作的二进制运算符
x=+1
作为被处理。
还有一些一元运算符只需要右手边操作数(例如〜/!否定)。有一些运算符可以是一元和二元的。
python中的加号也可以用作右边的运算符,就像减号一样。
Python的文档:
的一元 - (负)运算符产生其数字 参数的否定。
一元+(加号)运算符使其数值参数保持不变。
'i = + 1'与'i = 1'是一样的东西。 '+'是这里的一元运算符。 –
请参阅[关于一元表达式的语言参考](https://docs.python.org/3/reference/expressions.html#grammar-token-u_expr) –