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数组遍历的简单实现方法小结
Apr 27 Python
利用Python脚本生成sitemap.xml的实现方法
Jan 31 Python
django允许外部访问的实例讲解
May 14 Python
python实现按长宽比缩放图片
Jun 07 Python
python从子线程中获得返回值的方法
Jan 30 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
python实现滑雪者小游戏
Feb 22 Python
基于python实现破解滑动验证码过程解析
May 28 Python
详解python安装matplotlib库三种失败情况
Jul 28 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 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获取网络上文件
2006/10/09 PHP
php相当简单的分页类
2008/10/02 PHP
php阳历转农历优化版
2016/08/08 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
Python遍历指定文件及文件夹的方法
2015/05/09 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
python入门教程之识别验证码
2017/03/04 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
python中对数据进行各种排序的方法
2019/07/02 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
网络工程专业毕业生推荐信
2013/10/28 职场文书
硕士研究生自我鉴定
2013/11/08 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
农村婚礼主持词
2014/03/13 职场文书
高中生操行评语大全
2014/04/25 职场文书
咖啡店创业计划书范文
2014/09/15 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
团代会邀请函
2015/02/02 职场文书
美丽的大脚观后感
2015/06/03 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python