为何Python代码在终端与交互式控制台执行输出存在差异?
Python脚本与交互式执行的输出差异原因
首先明确两种执行方式的实际输出:
- 终端脚本执行(
python3 function.py)输出:I am happy avc I am happy avc - 交互式控制台逐行执行输出:
I am happy avc I am happy avc None
差异产生的核心原因是两种执行模式的输出机制不同:
- 脚本模式:仅会执行代码中显式的输出语句(比如
print())。任何函数调用或表达式的返回值,若未被显式打印或赋值,都会被直接丢弃,不会产生输出。比如执行print(test())时,先调用test()打印"I am happy"并返回"avc",print()输出"avc"后,自身返回的None会被直接丢弃,不会额外输出。 - 交互式模式:会自动打印所有未被赋值的表达式语句的返回值。当逐行执行
print(test())时,这是一个函数调用表达式,print()函数本身的返回值是None(所有无返回值的Python函数默认返回None),交互式控制台会自动将这个None打印出来,这就是多出来的那行输出。
如果想让交互式执行的输出和脚本一致,只需将print(test())赋值给一个变量(比如b = print(test())),此时返回值被赋值接收,交互式就不会额外打印None了。
内容的提问来源于stack exchange,提问作者user26125734
相关产品推荐
相关产品推荐

