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 获取进程pid号的方法
Mar 10 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
python 读取文件并替换字段的实例
Jul 12 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
Python制作动态字符图的实例
Jan 27 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
python 读取、写入txt文件的示例
Sep 27 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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
留言板翻页的实现详解
2006/10/09 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
Python将多个excel文件合并为一个文件
2018/01/03 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
规划编制实施方案
2014/03/15 职场文书
春风行动实施方案
2014/03/28 职场文书
团日活动总结书格式
2014/05/08 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python