返回介绍

匹配语法

发布于 2024-01-29 22:24:16 字数 1046 浏览 0 评论 0 收藏 0

表18-1总结了与特定参数匹配模式有关的语法。

这些特殊的匹配模式分解到如下的函数调用和定义中:

·在函数的调用中(在表中的前4行),简单的通过变量名位置进行匹配,但是使用name=value的形式告诉Python依照变量名进行匹配,这些叫做关键字参数。在调用中使用*sequence或者**dict允许我们在一个序列或字典中相应地封装任意多的位置相关或者关键字的对象,并且在将它们传递给函数的时候,将它们解包为分开的、单个的参数。

·在函数的头部,一个简单的变量名是通过位置或变量名进行匹配的(取决于调用者是如何传递给它参数的),但是name=value的形式定义了默认的参数值。*name的形式收集了任意的额外不匹配的参数到元组中,并且**name的形式将会收集额外的关键字参数到字典之中。在Python 3.0及其以后的版本中,跟在*name或一个单独的*之后的、任何正式的或默认的参数名称,都是keyword-only参数,并且必须在调用中按照关键字传递。

在这其中,关键字参数和默认参数也许是在Python代码中最常见的了。在本书前面,我们已经非正式地使用过这两种形式了:

·我们已经使用关键字来指定Python 3.0的print函数的选项,但是,它们有更广泛的用途——关键字允许使用其变量名去标记参数,让调用变得更有意义。

·我们之前见过默认参数,作为一种从内嵌函数作用域传递值的办法,但是它们实际上比这更通用:它们允许创建任意可选的参数,并在函数定义中提供了默认值。

正如我们将看到的,函数头部的默认参数和调用中的关键字的这些组合,进一步允许我们挑选要覆盖哪些默认参数。

简而言之,特定的参数匹配模式可以自由地确认有多少参数是必须传递给函数的。如果函数定义了默认参数,如果你传递太少的参数它们就会被使用。如果一个函数使用*可变参数列表的形式,你能够传入任意多的参数;*变量名会将额外的参数收集到一个数据结构中去。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文