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程序的执行效率的教程
Apr 02 Python
Python中用于检查英文字母大写的isupper()方法
May 19 Python
十个Python程序员易犯的错误
Dec 15 Python
Python 列表理解及使用方法
Oct 27 Python
python实现树形打印目录结构
Mar 29 Python
numpy.delete删除一列或多列的方法
Apr 03 Python
python 构造三维全零数组的方法
Nov 12 Python
Python 导入文件过程图解
Oct 15 Python
python线程信号量semaphore使用解析
Nov 30 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
python爬取音频下载的示例代码
Oct 19 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切割汉字的常用方法实例总结
2019/04/27 PHP
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
javascript定义函数的方法
2010/12/06 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
js编写简易的计算器
2020/07/29 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
python实现RSA加密(解密)算法
2016/02/17 Python
Python 自动化表单提交实例代码
2017/06/08 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
python怎么判断素数
2020/07/01 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
const和static readonly区别
2013/05/20 面试题
机械工程师的岗位职责
2013/11/17 职场文书
个人职业及收入证明
2014/10/13 职场文书
2014年服务员工作总结
2014/11/18 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang