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模拟登陆实现代码
Jun 14 Python
python爬虫基本知识
Mar 05 Python
selenium处理元素定位点击无效问题
Jun 12 Python
python如何实现视频转代码视频
Jun 17 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
python实现LRU热点缓存及原理
Oct 29 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
Python如何用filter函数筛选数据
Mar 05 Python
在echarts中图例legend和坐标系grid实现左右布局实例
May 16 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
django上传文件的三种方式
Apr 29 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 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的一些基础知识分享
2011/07/27 PHP
php文件缓存类汇总
2014/11/21 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
mac下如何将python2.7改为python3
2018/07/13 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
Python简易版图书管理系统
2019/08/12 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
python如何输出反斜杠
2020/06/18 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
简单说下OSPF的操作过程
2014/08/13 面试题
最新的互联网创业计划书
2014/01/10 职场文书
剪彩仪式主持词
2014/03/19 职场文书
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript