所以我有一段簡單的代碼,打印出整數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) –