为什么我在此代码中出现此错误?
def fun(a,*b):
print(a,b)
fun(1,x=4,y=5)
执行代码时出现此错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fun() got an unexpected keyword argument 'x'
答案 0 :(得分:6)
你的函数根本没有关键字参数,只有位置参数。 *varargs
语法仅捕获额外的位置参数(没有name=
前缀)。
删除关键字参数语法并仅传递位置参数,或更新函数以获取关键字参数。
以下作品:
fun(1, 4, 5) # b will be set to (4, 5)
或在函数签名中添加**c
或类似的关键字**varkwargs
:
def fun(a, *b, **c):
print(a, b, c)
fun(1, x=4, y=5) # prints 1 () {'x': 4, 'y': 5}
对于这个具体的例子,可以删除*b
参数,因为你实际上并没有传递多个位置参数。