返回介绍

特定的参数匹配模型

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

正如我们看到的,参数在Python中总是通过赋值进行传递的。传入的对象赋值给了在def头部的变量名。尽管这样,在模型的上层,Python提供了额外的工具,该工具改变了调用过程中,赋值时参数对象匹配在头部的参数名的优先级。这些工具都是可选的,但是允许编写支持更复杂的调用模式的函数,并且你可能会遇到需要这些工具的一些库。

在默认情况下,参数是通过其位置进行匹配的,从左至右,而且必须精确地传递和函数头部参数名一样多的参数。还能够通过定义变量名进行匹配,默认参数值,以及对于额外参数的容器。

基础知识

在学习语法的细节之前,我需要强调一下,这些特定的模型是可选的,并且必须要根据变量名匹配对象,匹配完成后在传递机制的底层依然是赋值。实际上,这些工具对于编写库文件的人来说,要对比应用程序开发者更有用。但是因为尽管你不会自己动手编写这些模型,你很有可能在这儿犯错,这里是一些关于匹配模型的大纲。

位置:从左至右进行匹配

一般情况下,也是我们迄今为止最常使用的那种方法,是通过位置进行匹配把参数值传递给函数头部的参数名称,匹配顺序为从左到右。

关键字参数:通过参数名进行匹配

调用者可以定义哪一个函数接受这个值,通过在调用时使用参数的变量名,使用name=value这种语法。

默认参数:为没有传入值的参数定义参数值

如果调用时传入的值过于少的话,函数能够为参数定义接受的默认值,再一次使用语法name=value。

可变参数:收集任意多基于位置或关键字的参数

函数能够使用特定的参数,它们是以字符*开头,收集任意多的额外参数(这个特性常常叫做可变参数,类似C语言中的可变参数特性,也能够支持可变长度参数的列表)。

可变参数解包:传递任意多的基于位置或关键字的参数

调用者能够再使用*语法去将参数集合打散,分成参数。这个“*”与在函数头部的“*”恰恰相反:在函数头部它意味着收集任意多的参数,而在调用者中意味着传递任意多的参数。

Keyword-only参数:参数必须按照名称传递

在Python 3.0中(不包括Python 2.6中),函数也可以指定参数,参数必须用带有关键参数的名字(而不是位置)来传递。这样的参数通常用来定义实际参数以外的配置选项。

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

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

发布评论

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