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 05 Python
python简单实现获取当前时间
Aug 27 Python
Python数据可视化正态分布简单分析及实现代码
Dec 04 Python
详解Django rest_framework实现RESTful API
May 24 Python
Django框架实现逆向解析url的方法
Jul 04 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
python库matplotlib绘制坐标图
Oct 18 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 Python
如何在mac下配置python虚拟环境
Jul 06 Python
Python利用myqr库创建自己的二维码
Nov 24 Python
python实现计算图形面积
Feb 22 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
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
学习使用curl采集curl使用方法
2012/01/11 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php实现的RSS生成类实例
2015/04/23 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
继续学习javascript闭包
2015/12/03 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python 读入多行数据的实例
2018/04/19 Python
python encrypt 实现AES加密的实例详解
2020/02/20 Python
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
大学生找工作推荐信范文
2013/11/28 职场文书
演讲比赛获奖感言
2014/02/02 职场文书
电工工作职责范本
2014/02/22 职场文书
企业党员公开承诺书
2014/03/26 职场文书
花坛标语大全
2014/06/30 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
导游词之青岛太清宫
2019/12/13 职场文书