`
lantian_123
  • 浏览: 1360154 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

语法:

@deco
def foo():
     pass

等价于

foo = deco(foo)`

例子:

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

@log
def foo():
   print 'inside foo()'

调用 foo()

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics