Python装饰器使用样例


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

简单无参装饰器样例:

#定义装饰器
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()
     #业务代码

猜你喜欢

转载自www.cnblogs.com/heyong45/p/11361082.html