详解Python函数可变参数定义及其参数传递方式


Posted in Python onAugust 02, 2017

Python函数可变参数定义及其参数传递方式详解

python中 函数不定参数的定义形式如下

1、 func(*args) 

传入的参数为以元组形式存在args中,如:

def func(*args): 
  print args 
 
>>> func(1,2,3) 
(1, 2, 3) 
 
>>> func(*[1,2,3])  #这个方式可以直接将一个列表的所有元素当作不定参数 
传入(1, 2, 3)

2、func( **kwargs)

传入的参数为以字典形式存在args中,如:

def func(**kwargs): 
  print kwargs 
 
>>> func(a = 1,b = 2, c = 3) 
{'a': 1, 'c': 3, 'b': 2} 
 
>>> func(**{'a':1, 'b':2, 'c':3})   #这个方式可以直接将一个字典的所有键值对当作关键字参数传入 
{'a': 1, 'c': 3, 'b': 2}

3、也可以两者混用func(*args, **kwargs)

传入的顺序必须和定义顺序相同,这里是先不定参数列表,再是关键字参数字典,如:

def func(*args, **kwargs): 
  print args 
  print kwargs 
 
 
>>> func(1,2,3) 
(1, 2, 3) 
{} 
 
>>> func(*[1,2,3]) 
(1, 2, 3) 
{} 
 
>>> func(a = 1, b = 2, c = 3) 
() 
{'a': 1, 'c': 3, 'b': 2} 
 
>>> func(**{'a':1, 'b':2, 'c':3}) 
() 
{'a': 1, 'c': 3, 'b': 2} 
 
 
>>> func(1,2,3, a = 4, b=5, c=6) 
(1, 2, 3) 
{'a': 4, 'c': 6, 'b': 5}</span> 
 #这样跳跃传递是不行的 
>>> func(1,2,3, a=4, b=5, c=6, 7) 
SyntaxError: non-keyword arg after keyword arg

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
跟老齐学Python之有容乃大的list(4)
Sep 28 Python
Python实现定时任务
Feb 08 Python
python逆序打印各位数字的方法
Jun 25 Python
Python干货:分享Python绘制六种可视化图表
Aug 27 Python
tensorflow实现简单逻辑回归
Sep 07 Python
在python中将字符串转为json对象并取值的方法
Dec 31 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
python3获取url文件大小示例代码
Sep 18 Python
Pytorch释放显存占用方式
Jan 13 Python
Python利用Scrapy框架爬取豆瓣电影示例
Jan 17 Python
详解Python import方法引入模块的实例
Aug 02 #Python
Python字符串拼接的几种方法整理
Aug 02 #Python
详解 Python 读写XML文件的实例
Aug 02 #Python
Python MD5加密实例详解
Aug 02 #Python
Python 获取当前所在目录的方法详解
Aug 02 #Python
浅谈python中的数字类型与处理工具
Aug 02 #Python
Python实现的快速排序算法详解
Aug 01 #Python
You might like
理解php Hash函数,增强密码安全
2011/02/25 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
jquery 必填项判断表单是否为空的方法
2008/09/14 Javascript
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
angular.element方法汇总
2015/01/07 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
python用户管理系统的实例讲解
2017/12/23 Python
Python PO设计模式的具体使用
2019/08/16 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
Django如何重置migration的几种情景
2021/02/24 Python
abstract是什么意思
2012/02/12 面试题
善意的谎言事例
2014/02/15 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js