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

Python中打印函数作为print参数时输出异常及None来源求解

执行逻辑说明

Python调用任意函数时,会先完成所有参数的求值计算,再把计算得到的参数值传入函数执行,你写的print('When num is 5 :', my_print(5))执行顺序如下:

  1. 先计算第一个参数的值:就是固定字符串'When num is 5 :',无额外输出。
  2. 再计算第二个参数的值:需要执行my_print(5):
    • 函数内部循环触发5次print(i, end=' '),直接向标准输出打印0 1 2 3 4
    • 该函数没有定义return语句,默认返回值为None
  3. 现在两个参数的值都计算完成,分别是'When num is 5 :'和None,才会调用外层的print函数,把两个参数按默认分隔符(空格)拼接后打印,输出When num is 5 : None

两部分输出按执行顺序拼接,最终得到你看到的实际结果。

None的产生原因

Python中所有函数都有返回值,如果你没有显式写return语句指定返回值,函数默认会返回None。你将my_print(5)作为参数传入print时,print会把这个函数调用的返回值(也就是None)当做普通内容打印出来,就出现了末尾的None。

修复方案

如果要达到你的预期输出,有两种常见写法:

  • 方案1:分开两次打印,不要把带内部打印逻辑的函数放到外层print的参数里
def my_print(num: int) -> None:
    for i in range(num):
        print(i, end=' ')

if __name__ == '__main__':
    print('When num is 5 :', end=' ')
    my_print(5)
  • 方案2:修改my_print逻辑,改为返回拼接好的字符串而非内部直接打印
def my_print(num: int) -> str:
    return ' '.join(map(str, range(num)))

if __name__ == '__main__':
    print('When num is 5 :', my_print(5))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 17:45:04