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中分数的相关使用教程
Mar 30 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
python 实现矩阵填充0的例子
Nov 29 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 Python
用 Python 制作地球仪的方法
Apr 24 Python
简单了解Python变量作用域正确使用方法
Jun 12 Python
python 绘制正态曲线的示例
Sep 24 Python
Python命令行参数定义及需要注意的地方
Nov 30 Python
python通过函数名调用函数的几种方法总结
Jun 07 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数组操作
2011/12/30 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
JS中表单的使用小结
2014/01/11 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
JS中的phototype详解
2017/02/04 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
分享Python文本生成二维码实例
2016/01/06 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
django实现类似触发器的功能
2019/11/15 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
学python爬虫能做什么
2020/07/29 Python
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
销售口号大全
2014/06/11 职场文书
大学生学习计划书
2014/09/15 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
实习报告怎么写
2019/06/20 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
pandas提升计算效率的一些方法汇总
2021/05/30 Python