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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

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

例如,如果我有一个函数:

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

第一次使用默认值调用时会正常工作,但之后的调用将使用一个不断更新的列表。

提问于
用户回答回答于
def myFunc(working_list=None):
    if working_list is None: 
        working_list = []
    working_list.append("a")
    print working_list
用户回答回答于

在这种情况下,这并不重要,但您可以使用对象标识来测试None:

if working_list is None: working_list = []

您还可以利用布尔运算符或在python中定义的方式:

working_list = working_list or []

但是,如果调用者给出一个空列表(它被认为是false),则会出现意外的行为。

扫码关注云+社区

领取腾讯云代金券