python函数的万能参数传参详解


Posted in Python onJuly 26, 2019

我们通过一个简单的事例来展示一下函数的万能参数,我们先写一个最简单的函数

def test(*args,**kwargs):
print(args,kwargs)

然后定义两个变量

l = [1,2,3,4]
d = {"a":1,"b":2}

下面我们分别看下两种传参的方式有什么不同

第一种方式

test(l,d)

如果是使用上面的方式传参,那么l,d这2个变量都会传递给args这个形参,作为args变量的两个元素,kwargs是一个空的字典,没有任何参数传递一个他

([1, 2, 3, 4], {'a': 1, 'b': 2}) {}

我们可以看到列表l和字典d被当做一个tuple的两个元素了

第二种方式

test(*l,**d)

如果是上面的方式传参,那么l这个变量就会被赋值给args,d这个变量就会被赋值给kwargs

(1, 2, 3, 4) {'a': 1, 'b': 2}

通过上面的演示,你应该基本上了解python的万能参数了吧,也知道如果函数使用万能参数,你应该如何进行传参了把

今天被搞糊涂了,又把万能参数梳理一下

大家先看下这个函数

def foo(action=None,**kwargs):
  print("action",action,sep="=================>")
  print("kwargs", kwargs, sep="=================>")
 
d = {"a":1,"b":2} 
foo(d)
print("=".center(100,"*"))
 
foo(**d)

我执行的结果如下

python函数的万能参数传参详解

下面我来解释一下

第一种调用函数的方式,传递了一个字典进去,这个字典会被当做一个整体传递进去,这个字典会被赋值给位置变了,也就是action

第二种调用函数的方法,通过**字典的方法传递进去,他实际是这样传递的a=1,b=2这样传递进去的,实际上一个命名变量,而这2个变量的名称都不action,所以第二中调用的方式的结果就是

action为none

kwargs就是一个字典

我们在看来下第三种调用的方法

d = {"action":"action","a":1}
foo(**d)

下面在看下结果,是否就明白了一些了

python函数的万能参数传参详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 文件与目录操作
Dec 24 Python
python定时器使用示例分享
Feb 16 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
Python+matplotlib+numpy绘制精美的条形统计图
Jan 02 Python
python模块导入的细节详解
Dec 10 Python
python导入模块交叉引用的方法
Jan 19 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
FFrpc python客户端lib使用解析
Aug 24 Python
python求解汉诺塔游戏
Jul 09 Python
pytorch使用horovod多gpu训练的实现
Sep 09 Python
Python爬虫之Selenium库的使用方法
Jan 03 Python
Python Numpy之linspace用法说明
Apr 17 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 #Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 #Python
django admin.py 外键,反向查询的实例
Jul 26 #Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 #Python
python的re模块使用方法详解
Jul 26 #Python
Python企业编码生成系统总体系统设计概述
Jul 26 #Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 #Python
You might like
php 应用程序安全防范技术研究
2009/09/25 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
JS实现日期加减的方法
2013/11/29 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
Bootstrap插件全集
2016/07/18 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
vuejs指令详解
2017/02/07 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
高中化学教学反思
2014/01/13 职场文书
学习经验交流会主持词
2014/04/01 职场文书
实习护士自荐信
2014/06/21 职场文书
银行自荐信怎么写
2015/03/05 职场文书
医院志愿者活动总结
2015/05/06 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
4种方法python批量修改替换列表中元素
2022/04/07 Python