小编典典

避免空列表的默认参数的pythonic方法是什么?

all

有时,有一个空列表的默认参数似乎很自然。然而Python
在这些情况下会产生意想不到的行为

例如,如果我有一个功能:

def my_func(working_list=[]):
    working_list.append("a")
    print(working_list)

第一次调用时,默认值会起作用,但之后的调用将更新现有列表("a"每次调用一个)并打印更新的版本。

那么,获得我想要的行为的 Pythonic 方法是什么(每次调用都有一个新列表)?


阅读 55

收藏
2022-07-13

共1个答案

小编典典

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其用作默认值并在函数体中对其进行显式测试。

2022-07-13