读书人

Python中的*args与*kwargs

发布时间: 2013-03-19 17:22:05 作者: rapoo

Python中的*args与**kwargs

Python中的*args与**kwargs和装饰器

函数调用中的*args**kwargs

对于函数签名:

def check_web_server(host,port,path):

一般的调用方法就是传递三个值到该方法中,如果有一个元组如:

host_info=('localhost',80,'/')`

此时就可以用*args的方式来调用,即:

check_web_server(*host_info)

如果有一个字典:

host_info={'host':'localhsot','port':80,'path:'/'},

就可以采用

chek_web_server(**host_info)

的方式来调用。

函数签名中的* 和 **

def f(arg,*kwargs)

又称为通用方法签名,他可以按照

f(),f(a,b,c),f(a,b,foo=c,bar=d)

的方式去调用。

装饰器

Python装饰器可以说是给函数包装一些额外的功能,这些额外的功能可以是日志,计时,过滤等等。被装饰的函数对象通常会被重新赋值给原来的名字。

语法:

@decodef foo():     pass

等价于

foo = deco(foo)`

例子:

def log(func):  def wrappedFunc():        print '*** %s is called'% func.__name__        return func()  return warppedFunc@logdef foo():   print 'inside foo()'

调用 foo()

读书人网 >perl python

热点推荐