声明方法参数类型列表的最佳方法

时间:2019-06-19 14:52:58

标签: python python-3.x

我知道放置参数类型列表的好方法是:

def test(my_list = None):
    if my_list is None:
        my_list = []

但是我不明白为什么我不能简单地做类似的事情:

def test(my_list = list)

我在控制台模式下尝试过并且可以工作

更新

在“最小惊讶度”和“可变默认参数”中,他们解释了为什么我们不应该使用

def test(my_list = [])

不是为什么我不能使用

def test(my_list = list)

1 个答案:

答案 0 :(得分:0)

如果您执行l=list,则会收到此错误:

def a(l=list):
    print([x for x in l])
a()

# >> TypeError: 'type' object is not iterable

您要执行的操作是def a(l=list()),它与def a(l=[])完全相同。

然后我们回到这里的问题:"Least Astonishment" and the Mutable Default Argument

更新

如果我对您的理解很好,为什么不干脆做

def a(l=[]):
    l = l or []
    # ...rest of the method