python之装饰器

1、装饰器

装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景。

# 需求:万能的客户要求~在功能函数执行过程中,每个函数执行之前和执行之后
# 都打印xxx要执行了,xxx执行完了
# 解决方案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
def record_info():
    print("模拟:记录用户信息的代码")

@logging
def show_info():
    print("模拟:展示用户信息")

record_info()
show_info()

# >>>>>>>>>>>>函数准备执行
# 模拟:记录用户信息的代码
# <<<<<<<<<<<<函数执行完了
# >>>>>>>>>>>>函数准备执行
# 模拟:展示用户信息
# <<<<<<<<<<<<函数执行完了

2、装饰器的函数运行的流程

def decorators(fn):

    def warapper(*args,**kwargs):
        print("自定义功能,在函数前执行")
        result = fn(*args,**kwargs)
        print("自定义功能,在函数后执行")
        return result
    return warapper

@decorators
def show(name):
    print("----------",name)


show("tom")

这里写图片描述
首先运行show函数,然后发现有装饰器注解,直接把函数当做参数传入到装饰器函数中,把show的参数传入wrapper中,然后result接受show函数运行的结果,返回结果到show(),return wrapper装饰器执行完,函数也就执行结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值