有时,有一个空列表的默认参数似乎很自然。然而Python 在这些情况下会产生意想不到的行为。
例如,如果我有一个功能:
def my_func(working_list=[]): working_list.append("a") print(working_list)
第一次调用时,默认值会起作用,但之后的调用将更新现有列表("a"每次调用一个)并打印更新的版本。
"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)
文档说您应该将None其用作默认值并在函数体中对其进行显式测试。
None