gpt4 book ai didi

python - 为什么非默认参数不能跟在默认参数后面?

转载 作者:太空宇宙 更新时间:2023-11-03 20:23:42 25 4
gpt4 key购买 nike

为什么这段代码会抛出语法错误?

>>> def fun1(a="who is you", b="True", x, y):
... print a,b,x,y
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument

虽然以下代码段运行时没有明显错误:

>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...

最佳答案

所有必需的参数必须放在任何默认参数之前。仅仅因为它们是强制性的,而默认参数则不是。从语法上讲,如果允许混合模式,解释器将不可能决定哪些值与哪些参数匹配。如果参数未按正确顺序给出,则会引发 SyntaxError:

让我们使用您的函数来看看关键字参数。

def fun1(a="who is you", b="True", x, y):
... print a,b,x,y

假设允许像上面那样声明函数,然后通过上述声明,我们可以进行以下(常规)位置或关键字参数调用:

func1("ok a", "ok b", 1)  # Is 1 assigned to x or ?
func1(1) # Is 1 assigned to a or ?
func1(1, 2) # ?

您将如何建议在函数调用中分配变量,如何将默认参数与关键字参数一起使用。

>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...

引用 O'Reilly - Core-Python
此函数使用的默认参数在语法上对于上述函数调用是正确的。事实证明,关键字参数调用对于能够提供无序位置参数非常有用,但是,与默认参数相结合,它们也可以用于“跳过”缺少的参数。

关于python - 为什么非默认参数不能跟在默认参数后面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57984532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com