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 Web框架Pylons中使用MongoDB的例子
Dec 03 Python
探索Python3.4中新引入的asyncio模块
Apr 08 Python
python处理按钮消息的实例详解
Jul 11 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
Python交互式图形编程的实现
Jul 25 Python
python异常触发及自定义异常类解析
Aug 06 Python
python获取Linux发行版名称
Aug 30 Python
python打开使用的方法
Sep 30 Python
Django Xadmin多对多字段过滤实例
Apr 07 Python
python中if及if-else如何使用
Jun 02 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 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中文分词 自动获取关键词介绍
2012/11/13 PHP
php实现微信发红包
2015/12/05 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
Python File(文件) 方法整理
2019/02/18 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
中学生获奖感言
2014/02/04 职场文书
核心价值观演讲稿
2014/05/13 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
代办出身证明书
2014/10/21 职场文书
机关作风建设心得体会
2014/10/22 职场文书
保洁员岗位职责
2015/02/04 职场文书
大学生逃课检讨书
2015/05/04 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
详解如何用Python实现感知器算法
2021/06/18 Python
一起来学习Python的元组和列表
2022/03/13 Python