繁体   English   中英

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

[英]Why does the return statement not return any text, whilst print does?

当我跑

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时实现这一点?

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

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笔记本)而感到困惑。 在那些交互式shell中,如果你这样做:

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

确实它确实在屏幕上显示了价值。 但是,这只是因为你正在使用一个shell (大概)可以为你输出调用结果。 基本上那个shell(无论是终端还是一些交互式笔记本)都为你做了额外的print()声明......

作为一个注释 - 一般来说没有理由做类似的事情

return "true"

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

return True

(注意资本T)。

特别是因为你无论如何都可以做print(some_boolean_variable)或str(some_boolean_variable)....增加的好处是测试一个布尔值比每次比较字符串“true”要容易得多......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM