请使用以下代码:
def foo(a, b, c):
print(a, b, c)
foo(c=3, 1, 2)
我不明白的是为什么Python不允许这样做。 Python可以获取关键字参数并将其分配给参数c
,然后将其余的位置参数分配给未分配的参数,即a
和b
。
为什么不允许这样做?这背后的实际原因是什么?
更令人困惑的是foo(c=3, *(1, 2))
的作品。这是否与上面的调用基本相同,因为元组被解压缩到单个参数中?
如你所知,在Python中,位置参数传递遵循键盘参数传递,但是你正在处理的问题是另一个,你已经为“c”输入参数赋值两次,并且“a”参数没有任何对应的值。通常,您面临的错误是“a”参数缺少相应的值。