Python函数参数匹配模型通用规则keyword-only参数详解


Posted in Python onJune 10, 2019

Python3对函数参数的排序规则更加通用化了,即Python3 keyword-only参数,该参数即为必须只按照关键字传递而不会有一个位置参数来填充的参数。该规则在处理人一多个参数是很有用的。

keyword-only

kword_only(1, 2, 3, c=4)
print('-' * 20)
kword_only(a=1, c=3)

示例结果:

1 (2, 3) 4
--------------------
1 () 3

在 *args 之后的参数都需要在调用中使用关键字的方式传递,否则会抛出异常。

def kword_only(a, *b, c):
  print(a, b, c)
kword_only(1, 2, 3)

异常结果:

kword_only(1, 2, 3)
TypeError: kword_only() missing 1 required keyword-only argument: 'c'

我们也可以在参数列表中使用一个 * 字符,表示函数不会接受变量长度的参数列表,而是要求 * 后面的参数都需要使用关键字参数的方式传递。

def kword_only(a, *, b, c):
  print(a, b, c)
kword_only(1, b=2, c=3)
print('-'*20)
kword_only(b=2, c=3, a=1)

示例结果:

1 2 3
--------------------
1 2 3

我们可以看到 a 可以利用位置参数进行传递,但是 b 、 c 必须通过关键字参数传递,否则就会抛出异常。

def kword_only(a, *, b, c):
  print(a, b, c)
kword_only(1, 2, 3)

异常结果:

kword_only(1, 2, 3)
TypeError: kword_only() takes 1 positional argument but 3 were given

当然我们,可以通过对keyword-only参数使用默认值,这样例中的 a 仍可以通过位置参数或者关键字参数传递,而 b 、 c 就是可选的了,当然如果需要传递的话仍然是要利用关键字参数进行传递的。

def kword_only(a, *, b=2, c=3):
  print(a, b, c)
kword_only(1)
print('-'*20)
kword_only(a=1)
print('-'*20)
kword_only(b=22, c=33, a=11)

示例结果:

1 2 3
--------------------
1 2 3
--------------------
11 22 33

总结

以上所述是小编给大家介绍的Python函数参数匹配模型通用规则keyword-only参数详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python 可爱的大小写
Sep 06 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
python爬取网页转换为PDF文件
Jun 07 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
pandas 层次化索引的实现方法
Jul 06 Python
django框架使用方法详解
Jul 18 Python
Tensorflow模型实现预测或识别单张图片
Jul 19 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
Python 单例设计模式用法实例分析
Sep 23 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
python将unicode和str互相转化的实现
May 11 Python
python 判断文件还是文件夹的简单实例
Jun 10 #Python
python实现植物大战僵尸游戏实例代码
Jun 10 #Python
python中的协程深入理解
Jun 10 #Python
Python中asyncio模块的深入讲解
Jun 10 #Python
Python中的asyncio代码详解
Jun 10 #Python
Django集成CAS单点登录的方法示例
Jun 10 #Python
详解Python中的测试工具
Jun 09 #Python
You might like
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
php 读取文件乱码问题
2010/02/20 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
如何在PHP中读写文件
2020/09/07 PHP
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
juqery 学习之四 筛选过滤
2010/11/30 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
Python内置函数——__import__ 的使用方法
2017/11/24 Python
简单了解python中的与或非运算
2019/09/18 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
写好自荐信要注意的问题
2013/11/10 职场文书
秋季婚礼证婚词
2014/01/11 职场文书
新娘父亲婚礼致辞
2014/01/16 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
初中作文评语大全
2014/04/23 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
党建工作整改措施
2014/10/28 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
小学语文教学随笔
2015/08/14 职场文书
PL350与SW11的比较
2021/04/22 无线电
pytorch Dropout过拟合的操作
2021/05/27 Python
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang