-3
def love6(a, b):
    if a==6 or b==6 or a+b==6 or abs(a-b)==6:
        return True
    return False

我只在python一个return语句上工作,因此我可以理解“return True”的使用,但我无法理解“return False”的使用?这是通过python中的标准编程使用return语句的正确方法吗?还是这种使用 return 忽略某些语句行的快捷方式?

4

5 回答 5

7

默认情况下,python 函数会返回None,除非通过return语句明确告知要这样做。

显然,该函数的规范是如果 a 为 6,它应该返回 True,否则返回 False。如果没有第二次返回,该函数将不会返回 False,它将返回 None。

Python 之禅 (PEP 20)的第二条规则是“显式优于隐式”。此代码通过显式返回 True 或 False 来遵守该原则,而不是依赖于 None 的隐式返回。

于 2013-10-31T13:53:25.347 回答
6

如果if语句不匹配则不return True执行该行并且代码继续到第二个语句。return

如果第二个 return 语句不存在,则函数将结束并返回默认返回值None

该功能可以简化;if语句本身中使用的表达式已经计算为Trueor False

def love6(a, b):
    return a==6 or b==6 or a+b==6 or abs(a-b)==6

语句和两个返回在if这里完全是多余的。

于 2013-10-31T13:53:36.413 回答
2

您的代码与此基本相同:

def love6(a, b):
    if a==6 or b==6 or a+b==6 or abs(a-b)==6:
        return True
    else:
        return False

您需要最后一个,因为如果没有它,如果 if 语句的评估return返回,该函数将返回。但是,您不需要,因为一旦 Python 命中 a ,它就会退出封闭函数。NoneFalseelsereturn

于 2013-10-31T13:54:56.437 回答
2

如果return False不存在,那么只要条件不成立,该函数就不会返回任何内容。或者更确切地说,它会返回None,因为这是默认设置;这可能会意外地起作用,因为None它是虚假的,但通常最好是明确的;使用隐式None的代码通常是一个错误。

FWIW,如果一个函数只返回条件的结果,你可以...返回条件的结果:

return (a==6 or b==6 or a+b==6 or abs(a-b)==6)
于 2013-10-31T13:56:25.267 回答
1

在 Python 中,缩进控制语句进入哪个块。在这种情况下,“return False”是love6函数的一部分,因为它只有一组 4 个空格,而 return True 是 if 语句的一部分,因为它有两个4个空间组。因此,如果 if 语句条件为真,则该函数将返回 True,否则该函数将返回 False。该函数可以更紧凑地写为:

def love6(a,b):
    return a==6 or b==6 or a+b==6 or abs(a-b)==6
于 2013-10-31T13:56:16.623 回答