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 urlopen 使用小示例
Sep 06 Python
Python使用random和tertools模块解一些经典概率问题
Jan 28 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
Python之指数与E记法的区别详解
Nov 21 Python
pytorch 改变tensor尺寸的实现
Jan 03 Python
Tensorflow累加的实现案例
Feb 05 Python
Python ORM框架Peewee用法详解
Apr 29 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 Python
pyqt5打包成exe可执行文件的方法
May 14 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 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
世界收音机发展史
2021/03/01 无线电
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
2017/07/03 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
PHP 实现重载
2021/03/09 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
原生JS发送异步数据请求
2017/06/08 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
详解React 条件渲染
2020/07/08 Javascript
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
Django返回json数据用法示例
2016/09/18 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
小学生国旗下演讲稿
2014/04/25 职场文书
办理收楼委托书范本
2014/10/09 职场文书
学生评语集锦
2015/01/04 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
JavaScript分页组件使用方法详解
2021/07/26 Javascript