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

Python函数默认列表驻留内存导致输出异常的原因咨询

Python默认参数为空列表时重复追加元素的原因解释

先看复现该问题的示例代码:

def function_a(lst=[]):
    lst.extend(['X', 'Y', 'Z'])
    print(lst)

function_a()  # 输出: ['X', 'Y', 'Z']
function_a()  # 输出: ['X', 'Y', 'Z', 'X', 'Y', 'Z']

核心原因

  • Python的默认参数是在函数定义的那一刻就完成创建和初始化的,而不是每次调用函数时重新生成。
  • 列表属于可变对象,当你在函数内部对这个默认列表执行修改操作(比如extend、append),本质是在修改同一个内存地址里的列表对象。
  • 每次调用函数如果没有传入自定义的列表参数,就会复用这个已经被修改过的默认列表,自然会出现元素重复追加的情况。

正确的写法

如果希望每次调用时都使用新的空列表,应该把默认参数设为None,在函数内部初始化:

def function_a(lst=None):
    if lst is None:
        lst = []
    lst.extend(['X', 'Y', 'Z'])
    print(lst)

function_a()  # 输出: ['X', 'Y', 'Z']
function_a()  # 输出: ['X', 'Y', 'Z']

内容的提问来源于stack exchange,提问作者Patrick Cree

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:41:59