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编写Linux系统守护进程实例
Feb 03 Python
Python算法之图的遍历
Nov 16 Python
简单的python协同过滤程序实例代码
Jan 31 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
Python创建字典的八种方式
Feb 27 Python
Python中numpy模块常见用法demo实例小结
Mar 16 Python
python实现手机销售管理系统
Mar 19 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
Django框架 Pagination分页实现代码实例
Sep 04 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
Mar 10 Python
Python 跨.py文件调用自定义函数说明
Jun 01 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
安装APACHE
2007/01/15 PHP
mysql时区问题
2008/03/26 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
PHP实现的策略模式示例
2019/03/20 PHP
学习ExtJS border布局
2009/10/08 Javascript
JQuery优缺点分析说明
2010/06/09 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
python 以16进制打印输出的方法
2018/07/09 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
幼儿教师考核制度
2014/01/25 职场文书
2014年党务公开方案
2014/05/08 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
离婚协议书范文2014
2014/10/16 职场文书
转正申请报告格式
2015/05/15 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA
改造DE1103三步曲
2022/04/07 无线电