本文主要是介绍Python装饰器(decorator)用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
普通的不带参数的装饰器,写法如下:
def debug(func):def wrapper(*args, **kwargs):print 'debug start'ret = func(*args, **kwargs)print 'debug end'return retreturn wrapper@debug
def foo(arg1, arg2):print 'foo', arg1, arg2
带参数的装饰器,写法如下:
def debug(level=1):def wrapper(func):def inner_wrapper(*args, **kwargs):print 'debug start(level=%s)' % levelret = func(*args, **kwargs)print 'debug end(level=%s)' % levelreturn retreturn inner_wrapperreturn wrapper@debug(3)
def foo1(arg1, arg2):print 'foo1', arg1, arg2@debug()
def foo1(arg1, arg2):print 'foo2', arg1, arg2
也就是说,不带参数的装饰器其实就是将原函数包装一下,而带参数的装饰器则是将原函数包装两下,其中外层的包装比较灵活,是“带参数”的。
本文出自夜惊心的博客,转载请保留出处
这篇关于Python装饰器(decorator)用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!