Python如何求解表达式1+++2
?
无论我在中间加多少个+
,它总是输出3
作为答案。请问有人能解释这种行为吗?
而对于1--2
,它输出3
,而对于1---2
,它输出-1
Python如何求解表达式1+++2
?
无论我在中间加多少个+
,它总是输出3
作为答案。请问有人能解释这种行为吗?
而对于1--2
,它输出3
,而对于1---2
,它输出-1
你的表达式与以下相同:
1+(+(+2))
任何数字表达式前面都可以加上 -
使其变成负数,或者加上 +
什么也不做(为了对称性而提供的选项)。带有负号的:
1-(-(2)) = 1-(-2)
= 1+2
= 3
并且
1-(-(-2)) = 1-(2)
= -1
我看到您澄清了问题,说您来自C语言背景。在Python中,没有像C语言中的++
和--
这样的增量运算符,这可能是导致您困惑的原因。要在Python中递增或递减一个变量i
或j
,请使用以下方式:
i += 1
j -= 1
额外的 + 不是增量操作符(例如在 C++ 中的 ++a 或 a++)。它们只是表示这个数字是正数。
没有这样的 ++ 操作符。不过有一元的 + 和一元的 - 操作符。一元的 + 操作符对其参数没有影响。一元的 - 操作符将其运算数取反或乘以 -1。
+1
-> 1
++1
-> 1
这与+(+(1))相同。
1+++2
因为它与 1 + (+(+(2)) 相同。
同样,你可以使用 --1 表示 -(-1),也就是 +1。 --1
为保证完整性,不存在 * 一元运算符。因此 *1 是错误的。但是有一个 ** 运算符,表示幂运算,它需要两个参数。
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
我认为它被解析为第一个加号作为二元操作(加法),其余的作为一元操作(变成正数)。
1 + (+(+2))