Python装饰器使用样例

99封情书 提交于 2019-11-27 11:08:33

 


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

 

简单无参装饰器样例:

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!