python之装饰器

需求:万能的客户要求~我们在功能函数执行过程中,每个函数执行之前和执行之后
要添加一个记录信息 [xxx要执行了]函数执行[xxxx执行完成了]
解决方案1:在函数中,执行代码之前和之后添加用户要求的功能
ERROR:违反了软件设计开发的OCP原则[open close principle 开闭原则]
为了软件开发的稳定性而设计的原则,被广大项目组所遵循
软件的功能扩展开放,软件原有的功能修改关闭
解决方案2:在函数调用的地方,前后添加代码
操作方案太过繁琐
代码执行的地方,很容易造成代码之间的冲突

解决方案3:PYTHON提供了装饰器函数,可以在不修改原有函数代码的情况下
通过添加装饰器函数的注解,给函数进行功能扩展!

# 定义了一个装饰器函数
def logging(fn):
    def wrapper(*args, **kwargs):
        print(">>>>>>>>>>>>>>>>>>函数准备执行....")
        result = fn(*args, **kwargs)
        print("<<<<<<<<<<<<<<<<<<<<<<函数执行完成")
        return result
    return wrapper

@logging
#logging相当于 record_info = logging(record_info)
def record_info():
    #print(">>>>>>>>>>") # 函数内部代码不能修改
    print("模拟:记录用户信息的代码")
    #print("<<<<<<<<<<<") # 函数内部代码不能修改

@logging
#logging相当于 record_info = logging(record_info)
def show_info():
    #print(">>>>>>>>>>") # 函数内部代码不能修改
    print("模拟:展示用户信息")
    #print("<<<<<<<<<<<") # 函数内部代码不能修改

# 如果需要记录用户信息
#print(">>>>>>>>>>")
record_info()
#print("<<<<<<<<<<<")
# 展示用户信息
#print(">>>>>>>>>>")
show_info()
#print("<<<<<<<<<<<")

你可能感兴趣的:(python之装饰器)