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中使用pyhook实现键盘监控的例子
Jul 18 Python
Python实现简单求解给定整数的质因数算法示例
Mar 25 Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
TensorFlow数据输入的方法示例
Jun 19 Python
Django中信号signals的简单使用方法
Jul 04 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
wxPython实现带颜色的进度条
Nov 19 Python
Python描述符descriptor使用原理解析
Mar 21 Python
Python如何合并多个字典或映射
Jul 24 Python
pytorch实现线性回归以及多元回归
Apr 11 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
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
python socket网络编程之粘包问题详解
2018/04/28 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
Python操作json的方法实例分析
2018/12/06 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
后勤主管工作职责
2013/12/07 职场文书
复核员上岗演讲稿
2014/01/05 职场文书
工厂实习感言
2014/01/14 职场文书
职称评定自我鉴定
2014/03/18 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
导游个人求职信范文
2014/03/23 职场文书
《恐龙》教学反思
2014/04/27 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
汽车专业求职信
2014/06/05 职场文书
团队激励口号
2014/06/06 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
javascript canvas实现雨滴效果
2021/06/09 Javascript