Python函数内for循环执行后意外输出None的问题求助
问题分析与解决
你遇到的额外输出None,核心原因是Python中没有显式return语句的函数,默认会返回None。
看你的代码:
def generate(): for i in range(5): print(i) print(generate())
执行时会分两步:
- 调用
generate(),函数内部的print(i)依次输出0、1、2、3、4 - 因为
generate()没有定义返回值,Python会默认让它返回None,外层的print()又把这个返回值打印了出来,所以多了一行None
两种解决办法
直接调用函数,不用外层的
print:def generate(): for i in range(5): print(i) generate() # 直接调用,不包裹print这样只会输出0-4,不会有额外的
None如果希望通过函数返回结果再打印,可以修改函数让它返回序列,再打印返回值:
def generate(): nums = [] for i in range(5): nums.append(i) return nums print(generate()) # 输出 [0, 1, 2, 3, 4]
内容的提问来源于stack exchange,提问作者nosni khoritz
相关产品推荐
相关产品推荐

