By
Moky
Updated:
【转】原创作品,允许转载。转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。
http://blog.sina.com.cn/s/blog_7dc317590101cbkr.html
问题
Python的函数定义中有两种特殊的情况,即出现*,**的形式。
如:def myfun1(username, *keys)
或def myfun2(username, **keys)
等。
解释
* 用来传递任意个无名字参数,这些参数会一个Tuple的形式访问。
**用来处理传递任意个有名字的参数,这些参数用dict来访问。
应用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| >>> def fun1(*keys): ... print "keys type=%s" % type(keys) ... print "keys=%s" % str(keys) ... for i in range(0, len(keys)): ... print "keys[" + str(i) + "]=%s" % str(keys[i]) ... >>> fun1(2,3,4,5) 输出以下结果: keys type= keys=(2, 3, 4, 5) keys[0]=2 keys[1]=3 keys[2]=4 keys[3]=5 >>> def fun2(**keys): ... print "keys type=%s" % type(keys) ... print "keys=%s" % str(keys) ... print "name=%s" % str(keys['name']) ... >>> >>> fun2(name="vp", age=19) 输出以下结果: keys type= keys={'age': 19, 'name': 'vp'} name=vp
|