“ return +/-”在python中做什么?

时间:2018-08-09 07:20:06

标签: python abstract-syntax-tree unary-operator

我正在浏览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中的作用以及什么时候应该使用它?

4 个答案:

答案 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 + operandreturn operand相同。我们习惯以return +operandreturn -operand的形式查看它们。