如何修复函数运行结束后额外输出None的问题?
Python程序末尾额外打印None的修复方案
核心诱因
绝大多数这类问题都来自同一个错误写法:你对无返回值的函数额外做了print()调用。
Python中所有函数都有默认返回值,如果你没有主动写return语句指定返回内容,函数默认返回None。如果你给这类函数外面套了一层print(),就会先执行函数内部的打印逻辑,再额外把返回的None打印出来,就出现了末尾多打None的问题。
示例错误写法:
def print_info(): print("程序执行完成") # 错误:额外给无返回值的函数套了print print(print_info())
运行输出结果:
程序执行完成 None
对应修复方案
- 方案1:直接调用函数,删除外层多余的
print()
上面的示例直接改为print_info()即可,不需要在外层再加打印逻辑。 - 方案2:调整函数逻辑,返回需要打印的内容而非在函数内打印
如果你需要统一管理打印逻辑,就把函数改为返回字符串的形式:
def get_info(): return "程序执行完成" print(get_info())
运行后只会输出一行程序执行完成,无多余内容。
- 方案3:处理交互环境的自动打印问题
如果你是在Python Shell、Jupyter这类交互环境中运行代码,环境会自动打印最后一行表达式的返回值。这种情况可以把最后一行的函数调用赋值给一个变量接收结果,比如res = print_info(),或者在脚本末尾单独加一行None即可。
其他少见情况排查
- 检查你是否给原生方法套了
print(),比如print(list.append(1))、print(dict.pop("key"))这类,这类修改类的原生方法默认返回None,直接调用即可不需要套print。 - 排查是否有全局异常捕获逻辑意外打印了空返回值。
内容的提问来源于stack exchange,提问作者Bruffff
相关产品推荐
相关产品推荐

