2009-01-22 128 views
21

Python如何評估表達式1 +++ 2?爲什麼1 +++ 2 = 3?

有多少個'+'我放在中間,它打印3作爲答案。請任何人都可以解釋這種行爲

而對於1--2正在打印3和1 --- 2正在打印-1

+0

這是否意味着沒有增加運營商在蟒蛇? – udpsunil 2009-01-22 17:52:39

+2

要在python中增加一個變量i:i + = 1 – 2009-01-22 17:56:05

+4

-1:這個問題對++和 - 做了大量的假設:在http://www.python.org/doc/2.5.2/ref/expressions.html – 2009-01-22 23:12:16

回答

51

你的表情是一樣的:

1+(+(+2)) 

任何數字表達式都可以在-之前使其成爲負數,或者+不做任何事(該選項對稱存在)。隨着負極標誌:

1-(-(2)) = 1-(-2) 
     = 1+2 
     = 3 

1-(-(-2)) = 1-(2) 
      = -1 

我看你明確你的問題說你來自一個C的背景。在Python中,C中沒有像++--這樣的增量運算符,這可能是您混淆的根源。遞增或遞減在Python可變ij使用這種樣式:

i += 1 
j -= 1 
4

1 +(+(+ 2))= 3

1 - (-2)= 3

1 - ( - ( - 2))= -1

13

附加+不是遞增器(如++ ++或++)。他們只是表明這個數字是積極的。

沒有這樣的++操作符。但是有一個一元運算符和一個一元運算符。一元+運算符對其參數沒有影響。一元運算符否定其運算符或將其乘以-1。

+1 

- > 1

++1 

- > 1

這是相同的+(+(1))

1+++2 

- > 3 ,因爲它是與1 +(+(+(2))相同

同樣,你可以做--1來表示 - (-1),它是+1。

--1 

- > 1

爲了完整性沒有*一元opeartor。所以* 1是一個錯誤。但是有一個** 運算符是強大的,它需要2個參數。

2**3 

- > 8

1

認爲它作爲1 +(1 *(+ 1 * 2)))。第一個+是運算符,後面的加號是第二個操作數(= 2)的符號。

就像1 --- 2是一樣的1 - - ( - (2))或1(-1 *( - 1 *(2))

1

我相信它被解析爲,在第一+作爲二進制操作(添加),其餘爲一元操作(請正)

1 + (+(+2)) 
3

試圖Unary Plus and Unary minus

的一元 - (減號)運算符產生其數字的否定論點。

一元+(加號)運算符使其數值參數保持不變。

>>> +2 
2 
>>> ++2 
2 
>>> +++2 
2 
>>> -2 
-2 
>>> --2 
2 
>>> ---2 
-2 
>>> 1+(++2) 
3 
相關問題