我知道放置参数类型列表的好方法是:
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)
答案 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