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获取文件扩展名的方法
Jul 06 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
一键搞定python连接mysql驱动有关问题(windows版本)
Apr 23 Python
Python基于OpenCV实现视频的人脸检测
Jan 23 Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
python 安装impala包步骤
Mar 28 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
Python - 10行代码集2000张美女图
May 23 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
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
师德师风学习材料
2014/12/19 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis