我理解首先传递位置参数然后传递关键字参数是python中的规则。
这就是为什么这些是错误的:
def fun(x,y):
print(x,y)
fun3(y=4,3)
SyntaxError: positional argument follows keyword argument
这也是错误的。
def fun2(**kwargs,*args):
File "<stdin>", line 1
def fun2(**kwargs,*args):
^
SyntaxError: invalid syntax
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() got multiple values for argument 'x'
得到 x 的多个值。所以 python 肯定知道哪个变量已经收到了值。为什么不能只检查哪些变量没有收到值,然后按顺序分配这些位置参数值。
我正在做笔记以供参考,我在写任何关于python这种行为背后的逻辑的东西时都被卡住了。