引用本文中的下面内容:
如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了: def person(name, age, *args, city, job): print(name, age, args, city, job) 命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错: >>> person('Jack', 24, 'Beijing', 'Engineer') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: person() takes 2 positional arguments but 4 were given 由于调用时缺少参数名city和job,Python解释器把这4个参数均视为位置参数,但person()函数仅接受2个位置参数。
如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:
*
def person(name, age, *args, city, job): print(name, age, args, city, job)
命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:
>>> person('Jack', 24, 'Beijing', 'Engineer') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: person() takes 2 positional arguments but 4 were given
由于调用时缺少参数名city和job,Python解释器把这4个参数均视为位置参数,但person()函数仅接受2个位置参数。
city
job
person()
如果根据前文定义的函数:
def person(name, age, *args, city, job)
实验,则后文的报错及分析是错误的或者说不是针对该定义函数的,使用该函数正确的报错是如下文:
>>> person('Jack', 24, 'Beijing', 'Engineer') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: person() missing 2 required keyword-only arguments: 'city' and 'job'
分析错误得出的结论是没有传入"city"和"job" 2个命名关键字参数,而文中
>>> person('Jack', 24, 'Beijing', 'Engineer') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: person() takes 2 positional arguments but 4 were given 由于调用时缺少参数名city和job,Python解释器把这4个参数均视为位置参数,但person()函数仅接受2个位置参数。
此处的报错和分析是针对小节 ‘命名关键字参数’ 中定义的函数:
def person(name, age, *, city, job)
而言的。
Sign in to make a reply
roc风羿
引用本文中的下面内容:
如果根据前文定义的函数:
实验,则后文的报错及分析是错误的或者说不是针对该定义函数的,使用该函数正确的报错是如下文:
分析错误得出的结论是没有传入"city"和"job" 2个命名关键字参数,而文中
此处的报错和分析是针对小节 ‘命名关键字参数’ 中定义的函数:
而言的。