"return +/- " 在 python 中做什么?

What does "return +/- " do in python?

我在查看 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 中的作用以及我们何时应该使用它吗?

return + operand 等同于 return operand(如果操作数是数字)。我看到的唯一目的是坚持这样一个事实,即我们不想要 operand.

的对立面

+- 都可以用作一元或二元运算符。在您的情况下,它们被用作一元运算符。 return + operandreturn operand 相同。我们习惯以return +operandreturn -operand.

的形式看到它们

本文中的加号和减号是 unary operators。也就是说,它们接受 单个操作数 。这与对 两个操作数 进行运算的二元运算符 *(例如)相比。显然 +1 就是 1。因此 return 语句中的一元运算符 + 是多余的。

我没有研究过代码,所以我不确定,但是 Python 允许覆盖 unary operator behavior:

__pos__(self) Implements behavior for unary positive (e.g. +some_object)

__neg__(self) Implements behavior for negation (e.g. -some_object)

所以 operand 在你的例子中可能是 class 的对象,它覆盖了那些魔术方法。

这意味着 return + operand 不等同于 return operand