def foo1(arg1,arg2,key1=1,key2=2,*arg,**keywords):
    print "arg1 parameters is ",arg1
    print "arg2 parameters is ",arg2
    print "key1 parameter is ",key1
    print "key2 parameter is ",key2
    print "Arbitrary parameter is ", arg
    print "keywords parameter is ",keywords

foo1(1,2,3,4,5,6,k1=1,k2=2,k3=3)

输出:

arg1 parameters is  1
arg2 parameters is  2
key1 parameter is  3
key2 parameter is  4
arg parameter is  (5, 6)
keywords parameter is  {'k3': 3, 'k2': 2, 'k1': 1}

函数参数分为四部分:
arg1,arg2,key1,key2普通参数
*arg 非关键字参数列表
**keywords 关键字参数列表

函数声名部分,参数的四个部分不可颠倒位置,可以没有其中某几部分。

python函数的这种特性使得函数参数更加灵活,参数个数也不受限制。