首页
学习
活动
专区
工具
TVP
发布

Python中函数参数类型和参数绑定

参数类型

Python函数的参数类型一共有五种,分别是:

POSITIONAL_OR_KEYWORD(位置参数或关键字参数)

VAR_POSITIONAL(可变参数)

KEYWORD_ONLY(关键字参数)

VAR_KEYWORD(可变关键字参数)

POSITIONAL_ONLY(位置参数)

下面用举几个例子解释一下这5个参数类型的含义: POSITIONAL_OR_KEYWORD如其名所见,既可以用位置传参,也可以用关键字传参,并且他没有任何*的声明

VAR_POSITIONAL是可变参数,通过*来声明,它会把接收到的值存入一个元组

KEYWORD_ONLY只能通过关键字传参,这种参数会在VAR_POSITIONAL参数类型的后面,而且不带**前缀,如同语义,只能通过指定关键字来传参,不可以用位置传参

VAR_KEYWORD是可变关键字参数,通过前缀**来声明,这种参数类型可以接收0个或多个参数,并存入一个字典

POSITIONAL_ONLY是第五个参数类型,但是它已经不重要了,因为高版本的Python无法创建一个POSITIONAL_ONLY类型的参数,但是有些使用C语言实现且不接收关键字参数的函数(如divmod)支持

从下面的例子,我们可以看到,新定义的foo函数,每个参数都对应到上面的一个类型

参数绑定

将函数的参数绑定到一个字典上

在inspect模块的帮助下,展示了Python数据模型把实参绑定给函数调用的形参的机制,这与解释器使用的机制相同,当我们删除字典中的name,执行时会报错缺少name参数。

再者,我们使用operator模块进行参数绑定

如上,methodcaller创建的函数会在对象上调用参数指定的方法,我们可以自己建立一个对象并生成自己的方法,再用methodcaller调用

最后会打印:

使用function.partial冻结参数

function.partial这个高阶函数用于部分应用函数,部分应用是指,基于一个函数创建一个新的可调用对象,把原函数的某些参数固定

如上,我们使用mul创建了triple函数,把第一个参数固定为3,然后返回一个可调用的对象,再传入不同的参数

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210402A080LE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券