为什么return语句不返回任何文本,而print却返回任何文本?

时间:2019-07-28 12:54:45

标签: python function return

我跑步时

profitable_gamble(0.2, 50, 9)

使用此功能没有输出

def profitable_gamble(prob, prize, pay):
    if prob * prize > pay:
        return "true"
    else:
        return "false"

但是当我将函数更改为使用print()

def profitable_gamble(prob, prize, pay):
    if prob * prize > pay:
        print("true")
    else:
        print("false")

我得到了预期的“真实”。如何在使用return而不是print时发生这种情况?

1 个答案:

答案 0 :(得分:2)

这是您认为您的代码应该做的:

def profitable_gamble(prob, prize, pay):
    if prob * prize > pay:
        return "true"
    else:
        return "false"


returned_value = profitable_gamble(0.2, 50, 9)
print(returned_value)

但是您永远不会告诉它打印任何内容,所以它不会打印任何内容。如果您仅拨打电话:

profitable_gamble(0.2, 50, 9)

然后您的函数仍然返回“ true”或“ false”。...您永远不会对其执行任何操作,因此它只会在调用堆栈中消失。

编辑:您也可能因为使用命令行(或类似Ipython笔记本之类的东西)而感到困惑。在这些交互式外壳中,如果您这样做:

profitable_gamble(0.2, 50, 9)
>> "true"

然后确实会在屏幕上显示该值。但是,这仅仅是因为您使用的是 shell (大概)将为您输出调用结果到控制台。因此,从本质上讲,该外壳(无论是终端还是一些交互式笔记本)都可以为您完成附加的print()语句。...

请注意-通常没有理由做类似的事情

return "true"

在python中。通常,您只想使用布尔值:

return True

(注意大写字母T)。

特别是因为无论如何您都可以执行print(some_boolean_variable)或str(some_boolean_variable)。...额外的好处是,测试布尔值比每次比较字符串“ true”要容易得多。