现在的位置: 首页 > 软件测试 > 测试技术 > 软件测试 > 正文

Python函数可变参数args及kwargs释义

2014年04月28日 测试技术, 软件测试 ⁄ 共 794字 ⁄ 字号 暂无评论 ⁄ 阅读 5,341 次

初学Python看到代码中类似func(*args, **kwargs)这样的定义时,经常感到一头雾水。

下面通过一个简单的例子来解释Python函数可变参数argskwargs的意思:

*args表示任何多个无名参数,它是一个tuple

**kwargs表示关键字参数,它是一个dict

同时使用*args和**kwargs时,*args参数列必须要在**kwargs前,要是像foo(1,a=1,b=2,c=3,2,3)这样调用的话,则会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。

测试代码如下:

def foo(*args,**kwargs):
	print 'args=',args
	print 'kwargs=',kwargs
	print '**********************'

if __name__=='__main__':
	foo(1,2,3)
	foo(a=1,b=2,c=3)
	foo(1,2,3,a=1,b=2,c=3)
	foo(1,'b','c',a=1,b='b',c='c')

执行结果如下:

args= (1, 2, 3)
kwargs= {}
**********************
args= ()
kwargs= {'a': 1, 'c': 3, 'b': 2}
**********************
args= (1, 2, 3)
kwargs= {'a': 1, 'c': 3, 'b': 2}
**********************
args= (1, 'b', 'c')
kwargs= {'a': 1, 'c': 'c', 'b': 'b'}
**********************

若还是不能理解的话,建议阅读这篇文章:http://blog.csdn.net/FeiSan/article/details/1729905