为什么1 +++ 2 = 3?

时间:2009-01-22 17:41:45

标签: python evaluation operator-precedence

Python如何评估表达式1+++2

我介入的+有多少,它打印3作为答案。请任何人都可以解释这种行为

1--2正在打印31---2正在打印-1

6 个答案:

答案 0 :(得分:59)

你的表达与:

相同
1+(+(+2))

任何数字表达式都可以以-开头以使其为负数,或+不执行任何操作(对称存在该选项)。带负号:

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

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

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

i += 1
j -= 1

答案 1 :(得分:14)

额外+不是增量器(如++中的++ a或++)。他们只是表明这个数字是正数。

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

+1

- > 1

++1

- > 1

这与+(+(1))

相同
   1+++2

- > 3 因为它与1 +(+(+(2))

相同

同样地,你可以--1表示 - (-1)这是+1。

  --1

- > 1

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

 2**3

- > 8

答案 2 :(得分:4)

1 +(+(+ 2))= 3

1 - (-2)= 3

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

答案 3 :(得分:4)

尝试Unary Plus and Unary minus

  

一元 - (减号)运算符产生其数字参数的否定。

     

一元+(加号)运算符使其数字参数保持不变。

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

答案 4 :(得分:1)

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

就像1 --- 2与1 - - ( - (2))或1-(-1 *( - 1 *(2))

相同

答案 5 :(得分:1)

我相信它被解析为,第一个+作为二元运算(add),其余作为一元运算(正面)。

 1 + (+(+2))