为什么这个 Python 函数只有一个输出?

Why does this Python function only have one output?

我有这个非常简单的 Python 函数,但有一部分我感到困惑。该函数称为 bigger,它接受两个数字作为输入并输出较大的数字。 (我只能用if语句,不能用else)

代码如下:

def bigger(x, y):
    if x > y:
        return x
    return y

如果 y 更大(确实如此),我认为这段代码会 return y,但它会 return x 并且y 如果 x 更大(它只有 returns x)。为什么它只有 return 一个输出? Python 函数只能有一个输出吗?

Python 函数只能 return 一个值。可以 return x 和 y 作为一个元组,但是这个函数的设置方式,它将 return 一个值然后退出函数。

def bigger(x, y):
    if x > y:
        # when x>y, x will be returned and 'return y' in the last line will not be executed.
        return x
    # only if x<y, this line will be executed.
    return y

return 语句不仅 return 是一个值,而且还终止当前函数和 return 对调用函数的控制。所以,这个函数只会 return 一个单一的值。在我看来,这样写会更清楚一些:

def bigger(x, y):
    if x > y:
        return x
    else:
        return y

但结果不会不同。

试试这个

def bigger(x, y):
if x > y:
    a=(x,y)
    # or a=[x,y]
    return a
return y

这样它将 return x 和 y 如果 x 更大,但如果 y 更大则为 y。我猜这是你的问题?

原因是 return 返回 1 值,然后退出该函数。所以它会离开 函数 bigger(x,y) 一旦达到 return。如果你想要 return x 和 y,你可以使用元组、列表,任何你想要的,就像我对元组所做的那样。

在Python 函数中,当遇到return 语句时,该函数的执行将终止。然后执行上下文返回到调用该函数的上下文。

因此,即使您看到两个 return 语句,如果遇到第一个语句(由于 x 大于 y),函数中的其他任何内容都不会运行。

https://docs.python.org/2/reference/simple_stmts.html#return

Python 仅 returns 一个值。

你可以试试,

def bigger(x, y):

    #this is optional: value = None
    if x > y:
        value = x
    else:
        value = y
    return value