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的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
Python文件与文件夹常见基本操作总结
Sep 19 Python
python 编写简单网页服务器的实例
Jun 01 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
python仿evething的文件搜索器实例代码
May 13 Python
python2和python3实现在图片上加汉字的方法
Aug 22 Python
django实现支付宝支付实例讲解
Oct 17 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
pytorch 中forward 的用法与解释说明
Feb 26 Python
bat批处理之字符串操作的实现
Mar 16 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利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
轻松实现php文件上传功能
2017/02/17 PHP
jQuery each()方法的使用方法
2010/03/18 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
python利用正则表达式搜索单词示例代码
2017/09/24 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
2019/04/29 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
迪奥官网:Dior.com
2018/12/04 全球购物
信息部岗位职责
2013/11/12 职场文书
回门宴答谢词
2014/01/13 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
十二生肖观后感
2015/06/12 职场文书
Django操作cookie的实现
2021/05/26 Python
最新最全的手机号验证正则表达式
2022/02/24 Javascript