我有一个简单的代码,可以打印出整数1-10:
i = 0
while i < 10:
i += 1
print(i)
如果你只是在第三行修改一个运算符,它将会打印出无数个1的整数(我明白为什么会这样)。
为什么执行第二个程序时没有发生语法错误?如果赋值运算符后面跟着一个加法运算符,那么不会引发语法错误吗?
i = 0
while i < 10:
i =+ 1
print(i)
我有一个简单的代码,可以打印出整数1-10:
i = 0
while i < 10:
i += 1
print(i)
如果你只是在第三行修改一个运算符,它将会打印出无数个1的整数(我明白为什么会这样)。
为什么执行第二个程序时没有发生语法错误?如果赋值运算符后面跟着一个加法运算符,那么不会引发语法错误吗?
i = 0
while i < 10:
i =+ 1
print(i)
i+=1
相当于 i=i+1
,而 i=+1
只是表示 i=(+1)
。
i =+ 1
is the same as i = +1
, or i = 1
.
x=+1
被视为:x=(+1)
,
而x+=1
被视为:x=x+1
有一些二元运算符,它们对其左操作数和右操作数进行操作(例如*乘法)。
还有一些一元运算符,它们只采用右操作数(例如~/!否定)。
有些运算符可以是一元和二元的。
在Python中,加号也可以作为右操作符就像减号一样。
Python文档:
一元-(减号)运算符产生其数字参数的否定。
一元+(加号)运算符不改变其数字参数。
分词器通常不需要空格,除非有必要消除歧义(例如,在变量名和语言关键字之间需要一个空格或某种形式的标点符号,以便识别关键字)。
因此,x=+y
、x =+ y
和 x = +y
在所有情况下都是等效的,都调用一元的 +
运算符对 y
进行操作并将结果赋值给 x
。虽然一元加运算符不常用,但仅仅因为它不常用并不意味着它不能被识别和接受。
相比之下,C/C++ 等语言中的 -->
"运算符" 是另一个例子,人们寻找空格而分词器却忽略它们导致混淆。
没有语法错误,因为表达式i =+ 1
与i = (+1)
相同,而+1
是完全合法的。它是一元运算符,而不是加法运算符。