装饰器作用
装饰器在实际开发中应用广发,如:
1.引入日志
2.函数执行时间统计
3.执行函数前预备处理
4.执行函数后清理功能
5.权限校验等场景
6.缓存
装饰器可以实现在不修改之前已经写好并且封装好的代码的前提下对之前的代码进行功能上的拓展!在实际开发中应用十分广泛,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多初次接触这个知识的人来讲,这个功能有点绕,自学时直接绕过去了,然后面试问到了就挂了,因为装饰器是程序开发的基础知识,这个都不会,别跟人家说你会Python.下面让我们来看下代码.
装饰器原理代码如下
def decotate(func):
"""装饰器实现给函数f1 f2 增加验证共功能 func 即 f1函数 f2 函数的引用"""
def inner(*args, **kwargs):
"""用不定长参数来接收任意个数的参数"""
print("正在验证")
ret = func(*args, **kwargs)
print("验证成功")
return ret
return inner
#@decotate 等价于 f1 = decotate(f1)
def f1():
print("账号:qweqweqwe")
#@decotate 等价于 f2 = decotate(f2)
def f2():
print("密码:sadasddas")
# 这里改变f1 的指向 注意:这里的f1 已经不是之前的f1
f1 = decotate(f1)
f2 = decotate(f2)
f1()
f2()
以上代码就是装饰器的基本实现原理,我们通过装饰器对已经封装好的 f1 f2 方法进行扩展,添加验证功能,装饰器的原理实际就是将之前的函数进行重写的过程.