在每次调用时清除可选参数

Clearing an optional argument at each call

你会如何定义一个函数,它接受一个可选参数并附加到它而不需要提供参数?代码类似于

def myfunc(value, values=[]):
    values.append(value)
    return values

print(myfunc("item"))
print(myfunc("item"))

预期输出为

['item']
['item']

而不是

['item']
['item', 'item']

避免使用可变(字典、列表等)作为默认参数。

相反,您可以执行以下操作。

def myfunc(value, values=None):
    if values is None:
        values = []
    values.append(value)
    return values

print(myfunc("item"))
print(myfunc("item"))