为了账号安全,请及时绑定邮箱和手机立即绑定

位置参数跟随关键字参数 | 调用函数时出错

位置参数跟随关键字参数 | 调用函数时出错

宝慕林4294392 2021-08-24 15:11:45
首先,我明白在定义函数时,您必须先放置位置参数,然后再放置默认参数,以避免解释器出现歧义情况。这就是为什么当我们尝试这样做时,它会抛出错误。例如,在以下代码中,无法在运行时评估 a 和 b,因为它会引发错误def func(a=1,b):    return a+bfunc(2)( Error:non-default argument follows default argument)这是可以理解的。但是为什么以下会导致错误。它不是在定义函数时发生,而是在调用函数时发生。def student(firstname, standard,lastname):     print(firstname, lastname, 'studies in', standard, 'Standard') student(firstname ='John','Gates','Seventh')Error:positional argument follows keyword argument我们不能同时传递带关键字和不带关键字的参数吗?[编辑]:问题不是可能的重复项,因为重复项涉及定义默认参数的情况。我没有定义它们。我只是问为什么我们不能混合关键字值参数和直接值参数。
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

就像错误所说的那样:

Error:positional argument follows keyword argument

关键字参数后面不能有位置参数。

你的例子就是一个很好的例子。

您将第一个参数指定为关键字参数。所以解释器现在如何解释参数的顺序是不明确的。第二个参数是否成为第一个参数?第二个参数?但是您已经指定了第一个参数 ( firstname='John') 那么位置参数会发生什么?

def student(firstname, standard,lastname): print(firstname, lastname, 'studies in', standard, 'Standard')

student(firstname ='John','Gates','Seventh')

解释是否将此解释为:

student(firstname ='John',standard='Gates',lastname='Seventh')

student(firstname ='John',standard='Gates',lastname='Seventh')

student(firstname ='John',firstname='Gates',lastname='Seventh')

怎么样:

student(lastname ='John','Gates','Seventh')

这个?

student(lastname ='John',firstname='Gates',standard='Seventh')

还是这个?

student(lastname ='John',standard='Gates',firstname='Seventh')

祝你在调试什么参数匹配什么参数时好运。


查看完整回答
反对 回复 2021-08-24
?
茅侃侃

TA贡献1842条经验 获得超21个赞

也许你应该尝试:

student('John', 'Gates', 'Stevehn')

我不知道你是否可以在调用函数的同时定义一个变量。

悉尼


查看完整回答
反对 回复 2021-08-24
  • 2 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号