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
相关产品推荐
相关产品推荐

