为什么默认参数必须在非默认参数之前?
在 Python 中,函数定义中参数的顺序至关重要,尤其是当涉及默认参数和非默认参数的混合。此排序规则可确保函数调用期间参数的明确解释。
当函数定义中的默认参数后面有非默认参数时(如下例所示),将引发 SyntaxError:
<code class="python">def fun1(a="who is you", b="True", x, y): print(a, b, x, y)</code>
出现此错误是因为函数签名中必需参数(非默认)必须始终位于可选参数(默认)之前。当函数调用中省略参数时,默认参数满足占位符值,而非默认参数是必需的。
如果参数放置的顺序不正确,如上例所示,解释器无法确定正确的赋值函数参数的值。目前尚不清楚函数调用期间传递的值是否与默认参数或非默认参数匹配。
为了避免歧义,可以使用以下正确语法:
<code class="python">def fun1(x, y, a="who is you", b="True"): print(a, b, x, y)</code>
关键字参数可以与默认参数一起使用,以提供无序位置参数或跳过丢失的参数。例如,默认参数“a”和“b”可以与以下函数调用一起使用:
<code class="python">fun1(1, 2, b="False")</code>
在这种情况下,前两个位置参数被分配给“x”和“y”分别,当关键字参数将值“False”分配给“b”时,跳过默认值“True”。
以上是为什么 Python 函数中默认参数必须位于非默认参数之前?的详细内容。更多信息请关注PHP中文网其他相关文章!