引言
1 | 趁着闲暇之际总结了关于装饰器的知识,并结合前人的总结,整理了一篇关于python |
python中的装饰器是什么
直观:
以@开发放在某个函数之上的可调用对象我的理解:
装饰器本身是python的一个函数(也可以说是对象,因为python中一切皆是对象),
它能方便的让我们在不动已经写好的代码的基础上获取额外的功能,最重要的是它
能帮我抽取出几乎一样的代码出来,尤其是当不同函数中有相同的部分的时候,装
饰器能干净利落的让我们完成需求,比如鉴权功能/日志功能等等。也就是在进入
真正的函数之前就做了一些其他的事儿
理解一下什么是闭包
- 问题的来源
在学习之初总是听到或看到闭包这个词,我想很多直接学习python的同学肯定也是
经常听到这个词了 什么是闭包
我个人的理解时闭包是能访问定义体之外的非全局变量,或者说这个函数的作用域被
延伸了(因为它居然访问了并不是自己定义的非全局变量,注意这个非全局变量很重
要要是全局变量就没意义了)来个例子吧
1 | def list_append(): |
写个简单的装饰器
代码
1 | def get_result(func): |
执行结果及解释
1 | 执行结果: |
解决name属性被修改的问题
代码
1 | from functools import wraps |
执行结果及解释
1 | 执行结果: |
鉴权装饰器
场景说明
1 | 我们在进行接口开发的过程中,总是免不了对调用方进行鉴权的,毕竟资源时很宝贵的,不能随随 |
代码
1 | from functools import wraps |
执行结果及解释
1 | 结果: |
传参装饰器
怎么生成传参装饰器
1 | 装饰器工厂函数,在学习python过程中经常听到这个词,因为这个函数的存在我们能很容易的 |
代码
1 | from functools import wraps |
执行结果及解释
1 | 结果: |