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 动态获取当前运行的类名和函数名的方法
Apr 15 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
详解在Python中处理异常的教程
May 24 Python
Python实现自动上京东抢手机
Feb 06 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
python 通过类中一个方法获取另一个方法变量的实例
Jan 22 Python
Python二进制文件读取并转换为浮点数详解
Jun 25 Python
python重要函数eval多种用法解析
Jan 14 Python
使用sklearn对多分类的每个类别进行指标评价操作
Jun 11 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
Python学习之os包使用教程详解
Mar 21 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获得当前的脚本网址
2007/12/10 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
php获取淘宝分类id示例
2014/01/16 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
django 控制页面跳转的例子
2019/08/06 Python
详解python的变量缓存机制
2021/01/24 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
Linux如何为某个操作添加别名
2013/03/01 面试题
Linux上比较文件的命令都有哪些
2013/09/28 面试题
公务员职务工作的自我评价
2013/11/01 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
单位工作证明格式模板
2014/10/04 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
停电通知范文
2015/04/16 职场文书
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL