原文地址:http://blog.sina.com.cn/s/blog_7dc317590101cbkr.html
问题:
Python的函数定义中有两种特殊的情况,即出现*,**的形式。
如:def myfun1(username, *keys) 或 def myfun2(username, **keys)等。
解释:
* 用来传递任意个无名字参数,这些参数会一个Tuple的形式访问。
** 用来处理传递任意个有名字的参数,这些参数用dict来访问。
式例:
1 >>> def fun1(*keys): 2 print "keys type=%s" % type(keys) 3 print "keys=%s" % str(keys) 4 for i in range(0, len(keys)): 5 print "keys[" + str(i) + "]=%s" % str(keys[i]) 6 7 >>> fun1(2,3,4,5) 8 9 keys type= 10 keys=(2, 3, 4, 5) 11 keys[0]=2 12 keys[1]=3 13 keys[2]=4 14 keys[3]=5
1 >>> def fun2(**keys): 2 print "keys type=%s" % type(keys) 3 print "keys=%s" % str(keys) 4 print "name=%s" % str(keys['name']) 5 6 7 >>> fun2(name="vp", age=19) 8 9 keys type= 10 keys={'age': 19, 'name': 'vp'} 11 name=vp