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

Python函数return关键字新手疑问:为何append返回None?

为什么list.append()导致函数返回None?

问题场景

在学习Python时,我尝试定义一个接收列表的函数,要求返回追加了该列表长度的列表,但第一次写的代码运行后一直得到None而非预期的完整列表。已经找到正确解法,现在想搞懂原代码失效的原因。

原代码(返回None)

#This is the first one I tried 
def append_size(lst):
  return lst.append(len(lst))

#Uncomment the line below when your function is done
print(append_size([23, 42, 108]))
# 输出None而非[23, 42, 108, 3]

正确代码

#This is the correct function
def append_size(lst): 
  lst.append(len(lst))
  return lst

核心原因

Python里的列表方法append()是原地修改列表——它会直接在原列表末尾添加元素,但这个方法的返回值固定是None,不会返回修改后的列表。

原代码里直接return lst.append(len(lst)),本质是返回了append()方法的返回值None,哪怕append()确实已经把列表长度(3)追加到了原列表里,但函数返回的不是修改后的列表本身。

正确的做法是先调用append()完成列表的修改(因为是原地修改,此时lst已经是我们想要的新列表),再单独返回lst,这样就能得到追加后的完整列表了。

内容的提问来源于stack exchange,提问作者Jonathan Goode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:45:20