python 装饰器

作用:

 Python装饰器可以在不改变函数原实现方式的前提下,为函数添加额外的功能。

可以用来加将报错信息添加到日志中 ,django使用@login_required 用来控制登录

写法:

def decorator(func):
    def wrapper(msg):
        print('I am  装饰器')
        return func(msg)
    return wrapper
@decorator
func(msg):
    print(f'msg is : {msg}')
func('hello world')

解释:

func (msg)  正常函数  

        msg  为传入的参数 可以为 字符串 数字 ...

decorator(func) 装饰器函数 

         func 为传入的参数 ,只不过他传入的是一个函数

@decorator
func(msg):

这个在函数头上写另一个函数 并@符号强调 是python 固定写法,代表上面函数是下面的装饰器 

装饰器的工作流程以及为什么可以起到添加其他功能的效果?

@decorator             
func(msg):            

1   上面的写法等于  func=decorator(func) 

      函数加括号相当于执行这个函数,所以执行decorator 得到 wrapper

      所以上面的形式变形为func= wrapper

2   当我执行func的时候

     func(msg)= wrapper(msg)

    执行wrapper函数并传入参数

    核心函数 wrapper 的返回值是 func(msg) 的执行结果,在函数内部可以加上我们想执行的其他功能,但是无论执行什么都不影响最终的返回结果

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值