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 getopt 参数处理小示例
Jun 09 Python
python读取Android permission文件
Nov 01 Python
python 链接和操作 memcache方法
Mar 04 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
基于python实现学生管理系统
Oct 17 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
关于Python-faker的函数效果一览
Nov 28 Python
详解从Django Allauth中进行登录改造小结
Dec 18 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
python同义词替换的实现(jieba分词)
Jan 21 Python
python如何操作mysql
Aug 17 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
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
JQuery datepicker 使用方法
2011/05/20 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
Angular4 中内置指令的基本用法
2017/07/31 Javascript
JavaScript实现左侧菜单效果
2017/12/14 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
Python三级菜单的实例
2017/09/13 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
python中比较两个列表的实例方法
2019/07/04 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
基于Pytorch SSD模型分析
2020/02/18 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
体育教师自荐信范文
2013/12/16 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
村委会贫困证明范本
2014/09/17 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
高中数学教学反思范文
2016/02/18 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript