def f(name, gender = 'male', *args, **kw): pass
位置参数:name
默认参数:gender
非关键字可变长参数:args
关键字参数:kw
tips:四者的顺序必须是(位置参数)+(默认参数)+(非关键字可变长参数)+(关键字参数)
特殊情况:
def f(name, gender = 'male', *args, **kw): print 'name: %s' % name print 'gender: %s' % gender if args != (): #print 'args: %d' % args# for x in args:# print 'args: %s' % x print args if kw != {}: for eachKey in kw: print '%s:%s' % (eachKey, kw[eachKey])t = tuple(range(3))d = dict(a = 1, b = 2)f('wm', 'female', 10, x = 1,*t, **d)运行结果:name: wmgender: female(10, 0, 1, 2)a:1x:1b:2
10在t之前出现,同时,t = (0, 1, 2),最后的结果是(10, 0, 1, 2)顺序与元素出现顺序一致,因为元组不可变。
因为dict无序,所以元素位置不定。