在python中使用两个加法运算符来添加两个整数是不是有效? [复制]
Posted
技术标签:
【中文标题】在python中使用两个加法运算符来添加两个整数是不是有效? [复制]【英文标题】:Is using two addition operators for adding two integers valid in python? [duplicate]在python中使用两个加法运算符来添加两个整数是否有效? [复制] 【发布时间】:2017-11-13 00:09:27 【问题描述】:我刚开始学习python。我只是想玩打印功能。我最终编写了以下代码。
print(2 ++ 2)
我预计 Python 解释器会抛出错误,因为我将两个加法运算符并排放置,而没有在它们之间放置一个整数。相反,python 解释器没有抛出任何错误并返回 4 作为输出。 我还尝试了以下代码:-
print(4 -- 2)
输出为 6。
谁能给我解释一下这些?
【问题讨论】:
如果从某项中减去负二,这与向其添加二是一样的。 相关(但可能不重复):***.com/q/1485841/5827958 @zondo: 不,这是一个非常合适的欺骗目标,解释完全一样。 【参考方案1】:2 ++ 2
被解释为:
2 ++ 2 == 2 + (+2)
因此,您在 2
和 +2
之间执行加法运算,其中第二个 +
因此是一元加法。如果你写2 +++ 2
,也会发生同样的情况:
2 +++ 2 == 2 + (+(+2))
4 -- 2
的情况类似:
4 -- 2 == 4 - (-2)
所以你从4
中减去-2
得到6
。
不禁止使用两个、三个(甚至更多)加法,但对于整数/浮点数只会导致更多的混乱,所以你最好不要这样做。
有class
es 可以定义自己的一元加号和一元减号 运算符(例如Counter
)。在这种情况下,++
的行为可能与+
不同。所以你最好不要使用++
(如果你这样做,请在两个+
ses 之间放置一个空格,以明确第二个+
是不同的运算符)。 p>
由于存在一元加号和减号运算符,因此第一个 +
或 -
之后的任何内容都被解释为一元。所以2 ++--++- 2
将导致0
因为:
2 ++--++- 2 == 2 + (+(-(-(+(+(-2))))))
【讨论】:
【参考方案2】:2 ++ 2
是
2 + (+2)
和
4 -- 2
是
4 - (-2)
这只是运算符优先级、固定性和数量的问题:
2 ==+-+-+ 2
#>>> True
注意对于数字,一元前缀+
被定义为恒等函数,一元前缀-
被定义为否定(即双元前缀--
是恒等函数);但 Python 支持运算符重载,因此不能保证所有对象都如此。
【讨论】:
以上是关于在python中使用两个加法运算符来添加两个整数是不是有效? [复制]的主要内容,如果未能解决你的问题,请参考以下文章