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装饰器 免去调用父类构造函数的麻烦
May 18 Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 Python
python实现QQ批量登录功能
Jun 19 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
Apr 16 Python
pandas分批读取大数据集教程
Jun 06 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 Python
Django多个app urls配置代码实例
Nov 26 Python
java字符串格式化输出实例讲解
Jan 06 Python
python中如何对多变量连续赋值
Jun 03 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
用PHP和ACCESS写聊天室(二)
2006/10/09 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
分享下php5类中三种数据类型的区别
2015/01/26 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
js计算页面刷新的次数
2009/07/20 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
pandas数据处理之绘图的实现
2020/06/15 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
大学旷课检讨书
2014/01/28 职场文书
小学教学随笔感言
2014/02/26 职场文书
节约用水标语
2014/06/11 职场文书
工伤私了协议书范本
2014/11/24 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
听证会主持词
2015/07/03 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书