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中去空格函数的用法
Aug 21 Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 Python
Java多线程编程中ThreadLocal类的用法及深入
Jun 21 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
python字典值排序并取出前n个key值的方法
Oct 17 Python
python抓取网页内容并进行语音播报的方法
Dec 24 Python
Django如何将URL映射到视图
Jul 29 Python
numpy.random.shuffle打乱顺序函数的实现
Sep 10 Python
Python测试Kafka集群(pykafka)实例
Dec 23 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
用Python 爬取猫眼电影数据分析《无名之辈》
Jul 24 Python
python 生成正态分布数据,并绘图和解析
Dec 21 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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
chrome原生方法之数组
2011/11/30 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
python实现的Iou与Giou代码
2020/01/18 Python
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
跟单文员的岗位职责
2013/11/14 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
国际贸易实训报告
2014/11/05 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS