首页 > 代码库 > python中的装饰器
python中的装饰器
什么是装饰器
如果有函数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中的装饰器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。