31

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

我在两者之间放了多少+,它正在打印3作为答案。请任何人都可以解释这种行为

因为1--2它正在打印31---2它正在打印-1

4

6 回答 6

63

您的表达方式与以下内容相同:

1+(+(+2))

任何数字表达式都可以在其前面加上-负数,或者+什么都不做(该选项是为了对称而存在的)。带有负号:

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

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

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

i += 1
j -= 1
于 2009-01-22T17:46:08.390 回答
15

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

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

+1

-> 1

++1

-> 1

这与 +(+(1)) 相同

   1+++2

-> 3 因为和 1 一样 + (+(+(2))

同样,您可以使用 --1 来表示 - (-1),即 +1。

  --1

-> 1

为了完整起见,没有 * 一元运算符。所以 *1 是一个错误。但是有一个 ** 运算符是幂的,它需要 2 个参数。

 2**3

-> 8

于 2009-01-22T17:47:04.330 回答
4

1+(+(+2)) = 3

1 - (-2) = 3

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

于 2009-01-22T17:46:22.977 回答
4

尝试一元加号和一元减号

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

一元 +(加号)运算符产生其数字参数不变。

>>> +2
2
>>> ++2
2
>>> +++2
2
>>> -2
-2
>>> --2
2
>>> ---2
-2
>>> 1+(++2)
3
于 2009-01-22T17:47:47.903 回答
1

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

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

于 2009-01-22T17:47:08.230 回答
1

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

 1 + (+(+2))
于 2009-01-22T17:47:36.030 回答