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中的字典与成员运算符初步探究
Oct 13 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
python实现简单点对点(p2p)聊天
Sep 13 Python
python实现BackPropagation算法
Dec 14 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
python numpy 显示图像阵列的实例
Jul 02 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
通过实例学习Python Excel操作
Jan 06 Python
python对Excel的读取的示例代码
Feb 14 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 Python
改变 Python 中线程执行顺序的方法
Sep 24 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 正则 过滤html 的超链接
2009/06/02 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php探针不显示内存解决方法
2019/09/17 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
JS类的封装及实现代码
2009/12/02 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
python实现图片批量剪切示例
2014/03/25 Python
Python中的各种装饰器详解
2015/04/11 Python
使用Python生成url短链接的方法
2015/05/04 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
python requests指定出口ip的例子
2019/07/25 Python
django的model操作汇整详解
2019/07/26 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
Python super()方法原理详解
2020/03/31 Python
Django通过json格式收集主机信息
2020/05/29 Python
Python 实现自动登录+点击+滑动验证功能
2020/06/10 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
计算机网络专业个人的自我评价
2013/10/17 职场文书
赔偿协议书范本
2014/04/15 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书