用实例说明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 相关文章推荐
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
Python文件和流(实例讲解)
Sep 12 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
python判断数字是否是超级素数幂
Sep 27 Python
python批量获取html内body内容的实例
Jan 02 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
详解Pycharm与anaconda安装配置指南
Aug 25 Python
Python list去重且保持原顺序不变的方法
Apr 03 Python
Pandas搭配lambda组合使用详解
Jan 22 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 Python
python内置模块之上下文管理contextlib
Jun 14 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
PHP session会话的安全性分析
2011/09/08 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
php-app开发接口加密详解
2018/04/18 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
javascript实现画板功能
2020/04/12 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
Python连接DB2数据库
2016/08/27 Python
python实现图片识别汽车功能
2018/11/30 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Python集合操作方法详解
2020/02/09 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
python drf各类组件的用法和作用
2021/01/12 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
施工单位安全责任书
2014/07/24 职场文书
保安2014年终工作总结
2014/12/06 职场文书
辞职信如何写
2015/02/27 职场文书
关于军训的感想
2015/08/07 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers
浅谈Node的内存泄露问题
2022/05/06 NodeJs