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之永远强大的函数
Sep 14 Python
跟老齐学Python之赋值,简单也不简单
Sep 24 Python
浅谈python迭代器
Nov 08 Python
Python实现修改文件内容的方法分析
Mar 25 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
python同步两个文件夹下的内容
Aug 29 Python
python 实现按对象传值
Dec 26 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 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中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
python用户管理系统
2018/03/13 Python
Python实现中一次读取多个值的方法
2018/04/22 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
卫校中专生个人自我评价
2013/09/19 职场文书
会计学生自我鉴定
2014/02/06 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
2014年人民警察入党思想汇报
2014/10/12 职场文书
门面房租房协议书
2014/12/01 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server