首页 > 编程语言 > 详细

Python装饰器使用样例

时间:2019-08-16 00:09:56      阅读:96      评论:0      收藏:0      [点我收藏+]

 


装饰器: 装饰器的本质也是一个函数,用于装饰其他函数,在不修改被装饰函数的源码和调用方式的情况下为其新增附加功能。

 

简单无参装饰器样例:

#定义装饰器
def logger(func):
    def wrapper(*args,**kwargs):
        print(" start.....")
        return func(*args,**kwargs)
        print(" end....")
   return wapper

#使用装饰器
@logger
def run1():
    print("run1")

@logger
def run2(arg)
   print("run2:%s" %arg)
  return "finished"

if __name__ == "__main__":
    run1()
    run2("hello")

 

待参数的装饰器样例:

#定义鉴权装饰器
def auth(auth_type):
    #带参装饰器需要多一层函数来接收参数。    
    def outer_wrapper(func):
        def wrapper(*args,**kwargs):
                auth_result=False
                if auth_type == "basic":
                    #调用basic鉴权
                    auth_result = basic_auth()
    
                 elif auth_type == "ldap":
                    #调用ldap鉴权
                    auth_result = ladp_auth()
                 else:
                    #非法的类型
                if not auth_result:
                    return {"msg":"auth failed","result":"failed"}
                else:
                    return func(*args,**kwargs)

#使用装饰器
@auth(auth_type="ldap")
def access_web()
     #业务代码

@auth(auth_type="basic")
def access_data()
     #业务代码

 

Python装饰器使用样例

原文:https://www.cnblogs.com/heyong45/p/11361082.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!