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('妹子好靚!')
分層次理解python裝飾器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.