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中的数据存储到系统本地的简单方法
Apr 11 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
Python实现字典去除重复的方法示例
Jul 31 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
python实现TF-IDF算法解析
Jan 02 Python
Python常见数据类型转换操作示例
May 08 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
pycharm2021激活码使用教程(永久激活亲测可用)
Mar 30 Python
Python实现仓库管理系统
May 30 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编写发红包程序
2015/07/22 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Python3遍历目录树实现方法
2015/05/22 Python
python绘制立方体的方法
2018/07/02 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
Python运行异常管理解决方案
2020/03/09 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
实习生自我评价
2014/01/18 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
团代会开幕词
2015/01/28 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
vue router 动态路由清除方式
2022/05/25 Vue.js