用实例说明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模拟鼠标拖动操作的方法
Mar 11 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
Django组件之cookie与session的使用方法
Jan 10 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
python应用文件读取与登录注册功能
Sep 23 Python
python3 webp转gif格式的实现示例
Dec 10 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
对python中arange()和linspace()的区别说明
May 03 Python
python 元组的使用方法
Jun 09 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
plt.figure()参数使用详解及运行演示
Jan 08 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正确配置mysql(apache环境)
2011/08/28 PHP
跟我学Laravel之路由
2014/10/15 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
django反向解析和正向解析的方式
2018/06/05 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Python发展简史 Python来历
2019/05/14 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
信息简报范文
2015/07/21 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
一级电子管军用接收机测评
2022/04/05 无线电
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android