You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手关于函数内return与print差异的技术问询

为什么用print()的函数会输出None,用return就不会?

嘿,这个问题戳中了Python函数里两个关键概念的区别:直接输出和返回值,我结合你的代码给你掰扯清楚:

第一段脚本(用print()的情况)

先看你的代码:

def study_time(math,english,literature,chemistry):
    total = math + english + literature + chemistry
    short = 10 - total
    if total >= 10:
        print ("You have completed today's study goal!")
    else:
        print ("Keep going! You are still " + str(short) + " hours short!")
result = study_time(2,3,1,4)
print (result)

这里的核心点是:

  • 函数里的print()是直接向控制台输出内容,但这个函数没有写return语句。在Python里,所有没有显式return的函数,都会默认返回None(这是语言的默认规则)。
  • 当你执行result = study_time(...)时,result变量实际上接收的是函数默认返回的None。之后你又调用print(result),所以控制台会先输出函数内部print的内容,再输出None——这就是你看到两个输出的原因。

第二段脚本(用return的情况)

再看这段代码:

def study_time(math,english,literature,chemistry):
    total = math + english + literature + chemistry
    short = 10 - total
    if total >= 10:
        return ("You have completed today's study goal!")
    else:
        return ("Keep going! You are still " + str(short) + " hours short!")
result = study_time(2,3,1,4)
print (result)

这里的区别很明显:

  • 函数里的return是把字符串作为函数的结果传递出去,函数本身不会直接输出内容。
  • 你把返回的字符串赋值给result,然后用print(result)输出这个字符串——这时候函数返回的是有效的字符串,不是默认的None,所以只会输出你期望的内容,不会有额外的None。

总结一下两者的适用场景

  • 如果你的函数是为了生成一个可以被其他代码复用的结果,一定要用return把结果返回出去。
  • 如果你的函数只是单纯要在控制台打印一条信息,不需要把这个信息传给其他代码,那可以用print(),但要注意此时函数的返回值是None,如果后续试图接收这个返回值,就会得到None。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:47:34