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之通过Python连接数据库
Oct 28 Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
python如何实现代码检查
Jun 28 Python
python 获取等间隔的数组实例
Jul 04 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
如何用python 操作zookeeper
Dec 28 Python
python 写一个水果忍者游戏
Jan 13 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将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
深入理解js promise chain
2016/05/05 Javascript
微信小程序 九宫格实例代码
2017/01/21 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
python选择排序算法实例总结
2015/07/01 Python
Python实现抢购IPhone手机
2018/02/07 Python
Python多线程扫描端口代码示例
2018/02/09 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
python添加菜单图文讲解
2019/06/04 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
技术经理的自我评价范文
2013/12/03 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
项目负责人任命书
2014/06/04 职场文书
公司活动总结范文
2014/07/01 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS
Django使用echarts进行可视化展示的实践
2021/06/10 Python