【发布时间】:2020-08-04 03:21:04
【问题描述】:
今天我注意到 Python 解释器将加法运算符的连续重复视为运算符的一次重复。例如:
>>> 1 ++ 2
3
当这样的事件发生时不简单地引发错误有什么用?我发现一个打字的程序员更可信
>>> 1 -+-++ 2
他们只是疯了;这不太可能故意出现在代码中。
写这样的东西似乎没有任何意义
>>> +-1
只返回-1,证明该操作不会使数字为正数,而是简单地执行恒等操作。
【问题讨论】:
-
...
+(1) == 1和-(1) == -1 -
stackoverflow.com/q/16819023/1424875 可能会有一些很好的讨论。一个可能的答案是一元 + 和一元 - 都是为了一致性/对称性而定义的,另外一个好处是一元 + 可以在适合某些类的情况下被覆盖。
-
随后发现的任何多余的运算符都将被视为下一个值的unary operator - 实际上还有一个反运算符
~,因此表达式-+~1也是有效的。它们由底层运算符方法__pos__支持+,__neg__用于-,__invert__用于~。