Python中函数参数匹配模型详解


Posted in Python onJune 09, 2019

当我们的函数接收参数为任意个,或者不能确定参数个数时,我们,可以利用 * 来定义任意数目的参数,这个函数调用时,其所有不匹配的位置参数会被赋值为元组,我们可以在函数利用循环或索引进行使用

def f(*args):
  # 直接打印元组参数
  print(args)
  print('-'*20)
  # 循环打印元组参数
  [print(i) for i in args]
  ...
# 传递一个参数
f(1)
print('='*20)
# 传递5个参数
f(1, 2, 3, 4, 5)

示例结果:

(1,)
--------------------
1
====================
(1, 2, 3, 4, 5)
--------------------
1
2
3
4
5

###任意参数 ** 而 ** 是用于收集关键字参数并将这些参数传递给一个新的字典,即在函数中我们可以利用处理字典的方式处理这些参数
def f(**args):
  # 直接打印字典参数
  print(args)
  for key, value in args.items():
    print('{}: {}'.format(key, value))
f(a=1)
print('='*20)
f(a=1, b=2, c=3)

示例结果:

{'a': 1}
a: 1
====================
{'a': 1, 'b': 2, 'c': 3}
a: 1
b: 2
c: 3

任意参数混合

我们可以混合一般参数、 * 参数以及 ** 参数完成实现更加复杂的调用方式。

def f(a, *targs, **dargs):
  print(a, targs, dargs)
f(1,2,3, x=1, y=2)

示例结果:

1 (2, 3) {'x': 1, 'y': 2}

可以看到这种调用方式并不那么直观,甚至有些“混淆视听”,那么怎么在复杂任意参数的调用时,是的在函数调用更加直观明了?

解包参数

我们可以在函数调用时,直接利用*和**进行参数传递,然后让函数自动解包,也就类似之前的序列解包,使用调用时更加的直观。

def f(a, b, c, d):
  print(a, b, c, d)
f(1, *(2, 3), **{'d': 4})

示例结果:

1 2 3 4

总结

以上所述是小编给大家介绍的Python中函数参数匹配模型详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
对Python中画图时候的线类型详解
Jul 07 Python
淘宝秒杀python脚本 扫码登录版
Sep 19 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 Python
python中HTMLParser模块知识点总结
Jan 25 Python
只用Python就可以制作的简单词云
Jun 07 Python
Python程序包的构建和发布过程示例详解
Jun 09 #Python
Python面向对象之继承和多态用法分析
Jun 08 #Python
Python基本数据结构之字典类型dict用法分析
Jun 08 #Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
Jun 08 #Python
Python面向对象之类的封装操作示例
Jun 08 #Python
Python面向对象之类和实例用法分析
Jun 08 #Python
Python学习笔记之自定义函数用法详解
Jun 08 #Python
You might like
解析php中如何调用用户自定义函数
2013/08/06 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
跟老齐学Python之折腾一下目录
2014/10/24 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
python 简单的多线程链接实现代码
2016/08/28 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
python实现简单颜色识别程序
2020/02/19 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
P/Invoke是什么
2015/07/31 面试题
高中校园广播稿
2014/01/11 职场文书
《中华少年》教学反思
2014/02/15 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
父母对孩子说的话
2014/04/12 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
2016继续教育研修日志
2015/11/13 职场文书