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的ORM框架SQLObject入门实例
Apr 28 Python
基于hashlib模块--加密(详解)
Jun 21 Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
关于python多重赋值的小问题
Apr 17 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
Python更改pip镜像源的方法示例
Dec 01 Python
利用Matlab绘制各类特殊图形的实例代码
Jul 16 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图片上传类带图片显示
2006/11/25 PHP
PHP中如何判断AJAX提交的数据
2012/02/05 PHP
PHP常用技巧汇总
2016/03/04 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
python实现巡检系统(solaris)示例
2014/04/02 Python
python中的函数用法入门教程
2014/09/02 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
教师自荐信
2013/12/10 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
十佳少年事迹材料
2014/12/25 职场文书
硕士学位申请报告
2015/05/15 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript