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 01 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
Python 中字符串拼接的多种方法
Jul 30 Python
python使用Matplotlib画饼图
Sep 25 Python
使用python对文件中的数值进行累加的实例
Nov 28 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
简单分析python的类变量、实例变量
Aug 23 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 Python
python 模块导入问题汇总
Feb 01 Python
Python语言中的数据类型-序列
Feb 24 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
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
php中的登陆login实例代码
2016/06/20 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
python网络编程学习笔记(一)
2014/06/09 Python
Python json模块使用实例
2015/04/11 Python
django框架创建应用操作示例
2019/09/26 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
资产运营委托书范本
2014/10/16 职场文书
签约仪式致辞
2015/07/30 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android