为什么位置参数需要在关键字参数之前指定
- 论坛
- 为什么位置参数需要在关键字参数之前指定
7 浏览
为什么位置参数需要在关键字参数之前指定
我了解在Python中先传递位置参数,然后再传递关键字参数是一条规则。
这就是为什么下面的代码是错误的:
def fun(x, y): print(x, y) fun3(y=4, 3) SyntaxError: 位置参数在关键字参数后面
这个也是错误的:
def fun2(**kwargs, *args): File "", line 1 def fun2(**kwargs, *args): ^ SyntaxError: 无效的语法
Python严格检查我是否先传递了位置参数。
我不明白的是为什么会这样。
这难道不是直观的吗:
def test(x, y, z): print(x, y, z)
然后以这种方式调用函数:
test(z=3, 1, 2)
应该先将关键字参数z
的值设置为3,然后按顺序将1和2分配给尚未分配值的变量x和y。
这甚至不是因为Python不检查变量是否已经分配了值,因为以下代码会报错:
def test2(x, y): print(x, y) test2(1, x=1) TypeError: test2()的参数'x'传入了多个值
传入了多个值给x。所以Python肯定知道哪些变量已经接收了值。为什么它不能检查哪些变量尚未接收值,然后按顺序为它们分配这些位置参数的值呢?
我在写自己的参考笔记时遇到了困难,无法解释Python这种行为背后的逻辑。