为何调用返回print函数调用结果的函数会触发打印?附Python示例
问题解答
先看你的代码:
def printing(): print("Hello World! WOW SO ORIGINAL!!!!") def returning(): return printing() returning()
为什么会出现这个现象?
核心原因是Python里的print()函数返回值是None:
- 调用
returning()时,它会执行printing(); printing()里的print语句会直接把字符串输出到控制台,这就是你看到的输出内容;print()执行完毕后返回None,所以printing()的返回值也是None;returning()把这个None返回,但你只是调用了returning(),没有打印它的返回值,所以控制台不会显示None;- 程序正常执行完成,因此输出
Process finished with exit code 0。
带参数的函数逻辑完全一致:只要函数里调用了print()(无论有没有参数),都会先输出内容,然后函数返回None,外层函数返回这个None,不主动打印的话就只会看到print的输出。
其他编程语言也是如此吗?
不同语言规则不同,主要分两类情况:
- 强类型编译型语言(如Java、C、Go):这类语言对函数返回值有严格要求,无返回值的函数会被标记为
void(Java/C)或声明为无返回值(Go),你不能把无返回值的函数作为返回值返回,编译器直接报错,根本到不了运行阶段。 - 动态类型语言(如JavaScript):和Python类似,
console.log()的返回值是undefined,如果写类似的嵌套调用代码,运行后也只会看到console.log的输出,返回的undefined不主动打印就不会显示。
内容的提问来源于stack exchange,提问作者Someone lol
相关产品推荐
相关产品推荐

