我们先分析一下题目中的函数:
def append_item(item, bucket=[]): bucket.append(item) return bucket
问题分析:
在 Python 中,默认参数值是在函数定义时计算的,而不是每次调用时计算。
因此 bucket=[] 这个空列表只会在函数定义时创建一次,之后所有不传入 bucket 参数的调用都会共享同一个列表对象。
例如:
append_item(1) # 返回 [1]
append_item(2) # 返回 [1, 2],而不是 [2]
修复方法:
def append_item(item, bucket=None): if bucket is None: bucket = [] bucket.append(item) return bucket