我刚开始学习python。我只是想尝试打印功能。我最后写了下面的代码。
print(2 ++ 2)
我期望Python解释器抛出一个错误,因为我将两个加法运算符放在一起,而不在它们之间放置一个整数。相反,python解释器没有抛出任何错误并返回4作为输出。 我也尝试了下面的代码: -
print(4 -- 2)
输出为6。
有人能解释一下这些吗?
答案 0 :(得分:5)
2 ++ 2
解释为:
2 ++ 2 == 2 + (+2)
因此,您需要在2
和+2
之间执行添加,其中第二个+
因此是一元加号。如果你写2 +++ 2
:
2 +++ 2 == 2 + (+(+2))
对于4 -- 2
案例,会发生类似情况:
4 -- 2 == 4 - (-2)
所以你从-2
中减去4
,导致6
。
不禁止使用两次,三次(或更多次)添加,但对于整数/浮点数只会导致更多混淆,所以最好不要这样做。
有class
个定义自己的一元加号和一元减号运算符(例如Counter
)。在这种情况下,++
的行为可能与+
不同。所以最好不要使用++
(如果你这样做,请在两个+
ses之间加一个空格,明确表示第二个+
是不同的经营者)。
由于有一元加号和减号运算符,因此第一个+
或-
之后的任何内容都被解释为一元。因此,2 ++--++- 2
将导致0
:
2 ++--++- 2 == 2 + (+(-(-(+(+(-2))))))
答案 1 :(得分:4)
select num_bornes,x,y
from point
where geom in (select (st_dumppoints(geom)).geom
from polygon
where id_polygon=1)
是
2 ++ 2
和
2 + (+2)
是
4 -- 2
这只是运算符优先级,固定性和arity的问题:
4 - (-2)
注意,对于数字,一元前缀2 ==+-+-+ 2
#>>> True
被定义为标识函数,并且一元前缀+
被定义为否定(这意味着双一元前缀-
是标识功能);但Python支持运算符重载,因此不能保证所有对象都适用。