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类的基础入门知识
Nov 24 Python
Python实现命令行通讯录实例教程
Aug 18 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
PyQt实现界面翻转切换效果
Apr 20 Python
Python解决八皇后问题示例
Apr 22 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
详解python和matlab的优势与区别
Jun 28 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
pytorch中的自定义数据处理详解
Jan 06 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
浅谈matplotlib默认字体设置探索
Feb 03 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版(3)
2006/10/09 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
JavaScript表单常用验证集合
2008/01/16 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python-接口开发入门解析
2019/08/01 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
python爬取招聘要求等信息实例
2020/11/20 Python
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
教育学专业毕业生的自我评价
2013/11/21 职场文书
小区门卫值班制度
2014/01/24 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
抽奖活动主持词
2014/03/31 职场文书
中国入世承诺
2014/04/01 职场文书
委托书模板
2014/04/04 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
退休欢送会致辞
2015/07/31 职场文书