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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
Python Web服务器Tornado使用小结
May 06 Python
Python中获取网页状态码的两个方法
Nov 03 Python
常见的在Python中实现单例模式的三种方法
Apr 08 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
python用插值法绘制平滑曲线
Feb 19 Python
学python安装的软件总结
Oct 12 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
Python 发送邮件方法总结
Aug 10 Python
python爬虫分布式获取数据的实例方法
Nov 26 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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遍历目录并返回统计目录大小
2014/06/09 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
ES6对象操作实例详解
2020/05/23 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
大学毕业感言一句话
2014/02/06 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
学子宴致辞大全
2015/07/27 职场文书
学生会自荐信
2019/05/16 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL