我正在学习* args和** kwargs并且有一个问题。当我们在列表上使用**而在字典上使用*时会发生什么?我知道它不起作用,但想知道它是否是一个语法问题,或者是否有某些事情有更直观的解释。
答案 0 :(得分:2)
让我们找出:
>>> def f(arg):
... print(arg)
...
>>> f(**[])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() argument after ** must be a mapping, not list
>>> f(*{})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() missing 1 required positional argument: 'arg'
>>> f(*{'foo': 42})
foo
因此列表失败,因为类型完全错误,并且dict按预期传递键:
>>> list({'foo': 42})
['foo']