您的位置:首页 > 编程语言 > Python开发

分层次理解python装饰器

2017-10-21 09:26 363 查看
import logging
#普通装饰器
def foo1(func):
def wrapper(*args,**kwargs):
logging.warn('I am %s'%func.__name__)
func(*args,**kwargs)
return wrapper
@foo1
def bar1(num):
print 'I am bar1',num+1

bar1(9)

#带参数的装饰器
def foo2(level='漂亮'):
def decorator(func):
def wrapper(*args,**kwargs):
logging.warn('I am %s%s'%(func.__name__,level))
if level=='漂亮':
print '果然是个大美人!'
else:
print '呵呵,有点失望哦!'
func(*args,**kwargs)
return wrapper
return decorator

@foo2('漂亮')
def bar2(num):
print num-1

bar2(9)

#类装饰器
class Decorator():
def __init__(self,func):
self._func=func

def __call__(self, *args, **kwargs):
logging.warn('I am %s'%self._func.__name__)
self._func(*args,**kwargs)

@Decorator
def bar3(str):
print str

bar3('妹子好靓!')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: