大爱

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

2014-04-28

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

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

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

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

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

测试代码如下:

1
2
3
4
5
6
7
8
9
10
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')

执行结果如下:

1
2
3
4
5
6
7
8
9
10
11
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

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章