有时,有一个空列表的默认参数似乎很自然。然而Python produces unexpected behavior in these situations .
例如,如果我有一个函数:
def my_func(working_list=[]):
working_list.append("a")
print(working_list)
第一次调用时,默认会起作用,但之后的调用会更新现有列表(每次调用一个 "a"
)并打印更新的版本。
那么,获得我想要的行为的 Pythonic 方法是什么(每次调用都有一个新列表)?
最佳答案
def my_func(working_list=None):
if working_list is None:
working_list = []
# alternative:
# working_list = [] if working_list is None else working_list
working_list.append("a")
print(working_list)
The docs说你应该使用 None
作为默认值并明确地使用 test for it在函数体中。
关于python - 避免空列表的默认参数的pythonic方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/366422/