【问题标题】:Why does this Python function only have one output?为什么这个 Python 函数只有一个输出?
【发布时间】:2015-01-02 00:51:35
【问题描述】:

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

代码如下:

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

我认为如果y 更大(确实如此),此代码将返回y,但如果x 更大,它将返回xy(它只返回x )。为什么它只返回一个输出? Python函数可以只有一个输出吗?

【问题讨论】:

  • 如果 y 更大,则返回 y。
  • 返回存在函数。
  • 函数每次调用只能返回一次。

标签: python if-statement output


【解决方案1】:

return 语句不仅返回一个值,还终止当前函数并将控制权返回给调用函数。所以,这个函数只会返回一个值。在我看来,这样写会更清楚一些:

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

但结果不会不同。

【讨论】:

  • 是的,我认为这是误会。 return 在大多数语言中的工作方式都是一样的——一旦你点击它,函数就结束了,控制权恢复到调用它的函数。我认为在某些语言中,将信息传递回调用者(返回值)和终止函数(返回控制)的概念是分开的,但 Python 不是其中之一。
【解决方案2】:
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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

        试试这个

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

        这样,如果 x 更大,它将返回 x 和 y,但如果 y 更大,则返回 y。我想这是你的问题?

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

        【讨论】:

        • 没错,我只是想通过将值分配给变量来使其简单/清晰。
        【解决方案6】:

        Python 函数只返回一个值。

        你可以试试,

        def bigger(x, y):
        
            #this is optional: value = None
            if x > y:
                value = x
            else:
                value = y
            return value
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-25
          • 2021-12-27
          • 2023-04-08
          • 1970-01-01
          相关资源
          最近更新 更多