【问题标题】:Missing "return" at the end of the function PythonPython函数末尾缺少“return”
【发布时间】:2017-06-11 10:24:18
【问题描述】:

这是一个非常愚蠢的问题,但是......

def gcd(a, b):
    if a < b:
        a, b = b, a
    if a == 0:
        return b
    elif b == 0:
        return a
    return gcd(b, a % b)

那么当函数末尾没有return时,为什么代码会返回None?当它被递归调用并且ab 最终等于0 时,它满足if 条件对吗?然后它应该返回非零值。

【问题讨论】:

  • 那么中间步骤不会返回值。
  • 这个函数永远不应该返回Noneab 的值是什么让您观察到 None
  • @DYZ 上面写的函数不会返回None,但我认为他是说当他省略最后一个返回时(使他的最后一行简单gcd(b, a % b)然后 它返回None,他在问为什么。
  • @Dan 听起来像是一个合理的解释。

标签: python return


【解决方案1】:

如果ab 都不等于0,则前两个return 语句都不会执行。

如果没有最后的返回,控制流会到达函数的末尾而没有遇到返回语句,因此返回default value of None

【讨论】:

    猜你喜欢
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2023-03-28
    相关资源
    最近更新 更多