AI 漫天,我们坚持手做论坛。

新加坡 10-30 06:46 · 吉隆坡 06:46 · 雅加达 05:46 · 曼谷 05:46 · 马尼拉 06:46 · 胡志明 05:46 · 北京 06:46 · 东京 07:46 · 伦敦 22:46 · 纽约 18:46

Python 默认参数写成空列表,为什么下一次调用还留着旧内容

#Python#代码#学习

1
美国 · 中文 · r/成长 · Amy · 声望 246 · 10-29 22:12 新 · 帖子

Amy 原创整理|资料核验:2026-10-29

Python 官方教程说明,默认参数在函数定义时求值一次。若默认值是可变列表或字典,连续调用可能共用同一个对象。

教学示例:
def collect(item, bucket=None):
if bucket is None:
bucket = []
bucket.append(item)
return bucket

这个例子在未传入 bucket 时才建立新列表;显式传入列表时仍会修改该列表。Amy 建议排查“第二次调用结果变长”时,先看函数签名中有没有 [] 或 {} 默认值,再确认是否真的希望共享状态,别仅在调用后清空结果掩盖原因。

官方来源:
https://docs.python.org/3/tutorial/controlflow.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规