用实例说明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 相关文章推荐
python人人网登录应用实例
Sep 26 Python
python logging类库使用例子
Nov 22 Python
python中list列表的高级函数
May 17 Python
Python的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
pygame实现俄罗斯方块游戏(AI篇2)
Oct 29 Python
基于Pytorch SSD模型分析
Feb 18 Python
python/golang 删除链表中的元素
Sep 14 Python
Django给表单添加honeypot验证增加安全性
May 06 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中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
Javascript中的相等与不等运算
2010/04/25 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
angular多语言配置详解
2019/05/16 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
django中cookiecutter的使用教程
2020/12/03 Python
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
高一历史教学反思
2014/01/13 职场文书
致400米运动员广播稿
2014/02/07 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
给老师的一封感谢信
2015/01/20 职场文书
面试复试通知单
2015/04/24 职场文书
环保建议书范文
2015/09/14 职场文书
python实现网络五子棋
2021/04/11 Python
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
python读取mat文件生成h5文件的实现
2022/07/15 Python
box-shadow单边阴影的实现
2023/05/21 HTML / CSS