python关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

def person(name, age, **kw):
    print 'name:',name,'age:',age,'other:',kw

def test(a,b,**kwargs):
    print a,b,kwargs
if __name__ == '__main__':
    person('Gs',28)
    person('Gs',28,city='Xuzhou',school='hangzhou')

关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到nameage这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

    kw={'city':'Xuzhou','school':'hangzhou'}
    person('Gs',28,**kw)

通过一个tuple和dict,你也可以调用该函数:

def person(name, age,*args, **kw):
    print 'name:',name,'age:',age,'args:',args,'kw:',kw

if __name__ == '__main__':
    args = (1, 2, 3)
    kw={'city':'Xuzhou','school':'hangzhou'}
    person('Gs',28,*args,**kw)

所以,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。

要注意定义可变参数和关键字参数的语法:

*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。

原文地址:https://www.cnblogs.com/gsblog/p/3585937.html