为什么位置参数不能跟随Python中的关键字参数?

问题描述 投票:1回答:1

请使用以下代码:

def foo(a, b, c):
    print(a, b, c)

foo(c=3, 1, 2)

我不明白的是为什么Python不允许这样做。 Python可以获取关键字参数并将其分配给参数c,然后将其余的位置参数分配给未分配的参数,即ab

为什么不允许这样做?这背后的实际原因是什么?

更令人困惑的是foo(c=3, *(1, 2))的作品。这是否与上面的调用基本相同,因为元组被解压缩到单个参数中?

python-3.x function arguments parameter-passing
1个回答
0
投票

如你所知,在Python中,位置参数传递遵循键盘参数传递,但是你正在处理的问题是另一个,你已经为“c”输入参数赋值两次,并且“a”参数没有任何对应的值。通常,您面临的错误是“a”参数缺少相应的值。

© www.soinside.com 2019 - 2024. All rights reserved.