首页 > 后端开发 > Python教程 > 为什么 Python 函数定义中必需的参数必须位于默认参数之前?

为什么 Python 函数定义中必需的参数必须位于默认参数之前?

Susan Sarandon
发布: 2024-10-31 22:24:02
原创
602 人浏览过

Why must required arguments precede default arguments in Python function definitions?

为什么默认参数不能在必需参数之前?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板