用实例说明python的*args和**kwargs用法


Posted in Python onNovember 01, 2013

先来看一个例子:

>>> def foo(*args, **kwargs):
    print 'args =', args
    print 'kwargs = ', kwargs
    print '-----------------------'
    
>>> if __name__ == '__main__':
    foo(1, 2, 3, 4)
    foo(a=1, b=2, c=3)
    foo(1,2,3,4, a=1, b=2, c=3)
    foo('a', 1, None, a=1, b='2', c=3)

其输出结果如下:
args = (1, 2, 3, 4)
kwargs =  {}
-----------------------
args = ()
kwargs =  {'a': 1, 'c': 3, 'b': 2}
-----------------------
args = (1, 2, 3, 4)
kwargs =  {'a': 1, 'c': 3, 'b': 2}
-----------------------
args = ('a', 1, None)
kwargs =  {'a': 1, 'c': 3, 'b': '2'}
-----------------------

从以上例子可以看出,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个 dict。并且同时使用*args和**kwargs时,*args参数列必须要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。如同所示:
Python 相关文章推荐
在MAC上搭建python数据分析开发环境
Jan 26 Python
Python迭代和迭代器详解
Nov 10 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
python多线程共享变量的使用和效率方法
Jul 16 Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
基于python生成英文版词云图代码实例
May 16 Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 Python
利用Python网络爬虫爬取各大音乐评论的代码
Apr 13 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 Python
python操作MongoDB基础知识
Nov 01 #Python
python操作MySQL数据库具体方法
Oct 28 #Python
Python sys.path详细介绍
Oct 17 #Python
python开发的小球完全弹性碰撞游戏代码
Oct 15 #Python
python中 ? : 三元表达式的使用介绍
Oct 09 #Python
Python 文件和输入输出小结
Oct 09 #Python
Python 错误和异常小结
Oct 09 #Python
You might like
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
js控制input输入字符解析
2013/12/27 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
说一说Python logging
2016/04/15 Python
详解python之heapq模块及排序操作
2019/04/04 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
Python实现异步IO的示例
2020/11/05 Python
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
电气工程自动化求职信
2014/03/14 职场文书
影子教师研修方案
2014/06/14 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
店铺转让协议书
2015/01/29 职场文书
档案管理员岗位职责
2015/02/12 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
小组口号霸气押韵
2015/12/24 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
使用javascript解析二维码的三种方式
2021/11/11 Javascript
Python使用Web框架Flask开发项目
2022/06/01 Python
python playwrigh框架入门安装使用
2022/07/23 Python