Python *arg **kwarg

来源:互联网 发布:域名投资怎么理解 编辑:程序博客网 时间:2024/06/07 08:44

函数中传*arg /**kwarg(收集参数)

  • 函数传入*arg
def print_params(title, *arg):    print title    print arg

测试一下:

>>> print_params('params', 1, 2)params(1, 2)

Explain:(1,2)是元组的形式;函数的位置参数为*arg,说明函数接受的是一个元组。

  • 函数传入**kwarg
def print_params(**kwarg):    print kwarg

测试一下:

>>> print_params(x=1, y=2){'y': 2, 'x': 1}

Explain:{‘y’: 2, ‘x’: 1}是字典的形式,因此函数的关键字参数为**kwarg,说明函数接收的是一个字典

调用函数时传入*arg/**kwarg(分割参数)

  • 调用函数时,传参为*arg
>>> def add(x, y): return x + y... >>> params = (1, 2)>>> add(*params)3

Explain:*params作为参数传递给add(),并且获得了1+2=3的结果,说明*params实则是将原来的元组中的元素(1, 2)取出来,传递给了add,相当于是add(1, 2)。(上例中params为元组,若为列表与上同)

  • 调用函数时,传参为**kwarg
>>> def hello_world(greeting='Hello', name='world'): print '%s, %s' % (greeting, name)... >>> params = {'name': 'Lily', 'greeting': 'Well met'}>>> hello_world(**params)Well met, Lily

Explain:与传参为*arg时相同,相当于是hello_world(name=’Lily’, greeting=’Well met’)

优点:在调用函数的时候,简化了参数传递的过程。

原创粉丝点击