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中的__new__与__init__魔术方法理解笔记
Nov 08 Python
pandas 对每一列数据进行标准化的方法
Jun 09 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
python+selenium+Chrome options参数的使用
Mar 18 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
python 字符串格式化的示例
Sep 21 Python
python设置中文界面实例方法
Oct 27 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
May 20 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 daodb插入、更新与删除数据
2009/03/19 PHP
两种php实现图片上传的方法
2016/01/22 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
页面中js执行顺序
2009/11/09 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
Python 的 Socket 编程
2015/03/24 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
一看就懂得Python的math模块
2018/10/21 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
医学生实习自我鉴定
2013/09/27 职场文书
新员工入职感言
2014/02/01 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书