为什么1 +++ 2 = 3?

Python如何评估expression式1 +++ 2?

中间放入了多less个“+”,其中打印3为答案。 请任何人都可以解释这种行为

而1–2是打印3和1 — 2是打印-1

你的表情和以下一样:

1+(+(+2)) 

任何数字expression式都可以在前面加上-使其成为负数,或者+不作任何事情(该选项对称)。 负号:

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

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

我看到你澄清了你的问题,说你来自C背景。 在Python中,没有像++这样的增量运算符,而在C中,这可能是你混淆的根源。 要在Python中增加或减lessvariablesij ,请使用以下样式:

 i += 1 j -= 1 

额外的+不是递增的(就像++ ++或++)。 他们只是表明这个数字是积极的。

没有这样的++操作符。 但是有一个一元运算符和一个一元运算符。 一元+运算符对其参数没有影响。 一元运算符否定其运算符或将其乘以-1。

 +1 

– > 1

 ++1 

– > 1

这与+(+(1))相同

  1+++2 

– > 3因为它与1 +(+(+(2))相同

同样,你也可以这样做–1表示 – (-1)+1。

  --1 

– > 1

为了完整性,没有*一元运营商。 所以* 1是一个错误。 但有一个**运算符是权力,它需要2个参数。

  2**3 

– > 8

1 +(+(+ 2))= 3

1 – ( – 2)= 3

1 – ( – ( – 2))= – 1

尝试一元加和一元减 :

一元 – (减号)运算符产生数值参数的否定。

一元+(加号)运算符的数值参数不变。

 >>> +2 2 >>> ++2 2 >>> +++2 2 >>> -2 -2 >>> --2 2 >>> ---2 -2 >>> 1+(++2) 3 

我相信它被parsing为,作为二元运算的第一个+(加),其余的作为一元运算(成立)。

  1 + (+(+2)) 

这很简单。 Python中没有后增或后减运算符。

看到这里: http : //mail.python.org/pipermail/python-list/2006-January/361771.html

认为它是1 +(+1 *(+ 1 * 2)))。 第一个+是运算符,后面的加号是第二个操作数(= 2)的符号。

就像1 — 2与1 – ( – (2))或1-(-1 *( – 1 *(2))一样