python中的装饰器
2015-03-13 18:09
477 查看
什么是装饰器
假设有函数A,B,C,已经全部编写完成,这时你发现A, B, C都需要同一个功能,这时该怎么办?
答: 装饰器
装饰器其实就是一个函数,不过这个函数的返回值是一个函数
个人理解,装饰器主要就是为了完成上边的这个功能,将A, B, C 函数包裹在另一个函数D中,D函数在A函数执行之前或之后,处理一些事情
假设有函数A,B,C,已经全部编写完成,这时你发现A, B, C都需要同一个功能,这时该怎么办?
答: 装饰器
装饰器其实就是一个函数,不过这个函数的返回值是一个函数
个人理解,装饰器主要就是为了完成上边的这个功能,将A, B, C 函数包裹在另一个函数D中,D函数在A函数执行之前或之后,处理一些事情
#!/usr/bin/env python #coding:utf-8 def SeparatorLine(): print "############################" #装饰器带参数函数带参数 def DecratorArgFuncArg(f1,f2): def inner(func): def wrapper(arg): print "装饰器带参数函数带参数" f1() result = func(arg) f2() return result return wrapper return inner #装饰器带参数函数不带参数 def DecratorArgFuncNoArg(f1,f2): def inner(func): def wrapper(): print "装饰器带参数函数不带参数" f1() result=func() f2() return result return wrapper return inner #函数没有参数的装饰器 def FuncNoArgDecrator(func): def wrapper(): print "函数没有参数的装饰器" func() return wrapper #函数有参数的装饰器 def FuncArgDecrator(func): def wrapper(arg): print "函数有参数的装饰器" func(arg) return wrapper #函数有返回值的装饰器 def FuncReturnDecrator(func): def wrapper(): print "函数有返回值的装饰器" result=func() return result return wrapper #这两个函数用 def login(): print '开始登录' def logout(): print '退出登录' @FuncArgDecrator def Lee(arg): print 'I am %s' %arg @FuncNoArgDecrator def Marlon(): print 'i am Marlon' @DecratorArgFuncNoArg(login,logout) def Allen(): print 'i am Allen' @DecratorArgFuncArg(login,logout) def Aswill(name): print 'I am %s' %name @FuncReturnDecrator def Frank(): return 'I am frank' if __name__=='__main__': SeparatorLine() Lee('Lee') SeparatorLine() Marlon() SeparatorLine() Allen() SeparatorLine() Aswill('Aswill') SeparatorLine() result = Frank() print result
相关文章推荐
- Python装饰器学习
- Python装饰器学习
- Python中几个挺好用的东西(函数、类、装饰器)
- Python札记 -- 装饰器
- (转)Python装饰器与面向切面编程
- Python深入05 装饰器
- python--装饰器
- 用python装饰器来优化算法
- python 多个装饰器组合应用,实现面向切面之AOP编程
- Python: 使用装饰器“@”取得函数执行时间
- Python装饰器学习
- 巧用Python装饰器 免去调用父类构造函数的麻烦
- python——装饰器例子一个
- 理解Python中的装饰器
- Python中的Decorator(装饰器)模式
- Head First 设计模式——装饰器(Decorator Pattern)——Python实现
- Python装饰器学习(九步入门)
- Python装饰器与面向切面编程
- Python装饰器实例:调用参数合法性验证
- Python装饰器学习