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创建系统目录的方法
Mar 11 Python
Django实现自定义404,500页面教程
Mar 26 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
Python使用pip安装pySerial串口通讯模块
Apr 20 Python
Python将多个list合并为1个list的方法
Jun 27 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
使用Python Pandas处理亿级数据的方法
Jun 24 Python
python的time模块和datetime模块实例解析
Nov 29 Python
python集合删除多种方法详解
Feb 10 Python
Python实战之实现简易的学生选课系统
May 25 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
isset和empty的区别
2007/01/15 PHP
PHP 反向排序和随机排序代码
2010/06/30 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
django如何通过类视图使用装饰器
2019/07/24 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
python如何将图片转换素描画
2020/09/08 Python
函授毕业自我鉴定
2013/12/19 职场文书
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
元旦晚会活动总结
2014/07/09 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
mysql sock文件存储了什么信息
2022/07/15 MySQL