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 Matplotlib库入门指南
May 18 Python
Python运算符重载用法实例分析
Jun 01 Python
python中MethodType方法介绍与使用示例
Aug 03 Python
python的re正则表达式实例代码
Jan 24 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
Python模拟随机游走图形效果示例
Feb 06 Python
python实现名片管理系统
Nov 29 Python
python多进程读图提取特征存npy
May 21 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
Python优秀开源项目Rich源码解析的流程分析
Jul 06 Python
Python urllib request模块发送请求实现过程解析
Dec 10 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
3种平台下安装php4经验点滴
2006/10/09 PHP
PHP PDO函数库详解
2010/04/27 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
2015/08/04 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
Flask实现跨域请求的处理方法
2018/09/27 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
html5的canvas方法使用指南
2014/12/15 HTML / CSS
什么是事务?为什么需要事务?
2012/01/09 面试题
计算机专业毕业生推荐信
2013/11/25 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
建国大业电影观后感
2015/06/01 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
战友聚会致辞
2015/07/28 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android