为什么默认参数不能在必需参数之前?
在 Python 中,当非默认参数跟在默认参数后面时,会引发语法错误函数的参数列表。此限制的存在是为了确保解释器对参数值的明确解释。
考虑以下函数定义:
def fun1(a="who is you", b="True", x, y): print a, b, x, y
此代码将引发语法错误,因为所需的参数 x 和 y 遵循默认参数 a 和 b。
必需参数优先
必需参数必须始终放置在函数参数列表中的任何默认参数之前。这是因为必需参数是强制性的,而默认参数是可选的。从语法上讲,如果混合使用,解释器将无法确定哪些值与哪些参数匹配。
示例
以下代码运行时没有错误,因为所需的参数 x和 y 放置在默认参数 a 和 b 之前:
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
关键字参数
关键字参数可用于以任何顺序调用带有参数的函数。但是,函数参数列表中参数的顺序仍然决定将哪些值分配给哪些参数。
例如,对于上面的函数定义:
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
以下代码是有效:
fun1("ok a", "ok b", 1) # 1 is assigned to x, "ok a" to a, "ok b" to b, "True" to y
但是,如果未使用默认值声明参数:
def fun1(x, y, a, b): print a, b, x, y
以下代码将引发 TypeError:
fun1("ok a", "ok b", 1) # 3 arguments instead of 4
因此,默认参数对于允许可选参数或在使用关键字参数时跳过缺少的参数很有用。
以上是为什么 Python 函数定义中必需的参数必须位于默认参数之前?的详细内容。更多信息请关注PHP中文网其他相关文章!