我正在浏览CPython源代码,我从标准库(ast.py
)中找到了以下代码。
if isinstance(node.op, UAdd):
return + operand
else:
return - operand
我在python解释器中尝试了以下内容
>>> def s():
... return + 1
...
>>> s()
1
但这与以下权利相同吗?
def s():
return 1
任何人都可以帮助我了解表达式return +
或return -
在python中的作用以及什么时候应该使用它?
答案 0 :(得分:2)
正负为unary operators。也就是说,它们接受单个操作数。这与对两个操作数进行运算的二进制运算符*
(例如)相比。显然+1
只是1
。因此,return语句中的一元运算符+
是多余的。
答案 1 :(得分:2)
我还没有研究代码,所以我不确定,但是Python允许覆盖unary operator behavior:
__pos__(self)
为一元正数(例如+ some_object)实现行为
__neg__(self)
实现否定行为(例如-some_object)
因此,在您的情况下,operand
可能是覆盖这些魔术方法的类的对象。
这意味着return + operand
不等于return operand
。
答案 2 :(得分:1)
return + operand
等效于return operand
(如果操作数是数字)。我看到的唯一目的是坚持我们不希望与operand
相反的事实。
答案 3 :(得分:1)
+
和-
都可以用作一元或二进制运算符。在您的情况下,它们用作一元运算符。 return + operand
与return operand
相同。我们习惯以return +operand
或return -operand
的形式查看它们。