0%

Python函数--装饰器

Python函数–装饰器

装饰器的定义

给已有函数增加额外的功能的函数, 本质上和闭包类似
遵循封闭开放的代码原则

  • 封闭:尽量少的修改原来的代码
  • 开放:可以添加额外的功能

    装饰器的语法糖用法

语法糖的理解:
形象的理解为,加了一层糖衣包装,.但是本质不便还是一颗糖
函数还是函数,但是在函数外部进行了处理,从而达到装饰的作用

装饰器的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 第一步闭包
# 第二步@语法糖
def set_fun(func): # 这个就是传入要被装饰的函数名或者叫引用
def call_fun():
print("函数自身内存地址:",func)
# 调用原先的函数
func()
return call_fun


set_fun # @set_fun ===> test = set_fun(test),这个就是语法糖的使用,前面是@后面跟上闭包的外层函数的名字即可,不加括号
def test():
print("test")

test()

上面出来了神奇的一幕,竟然先执行了函数set_fun最后在执行了函数自身的代码.这个就是装饰器的作用,test是原本的业务代码,我们遵循封闭开放的原则,在不改动原先代码的时候,同时也添加了新的功能.

这个函数执行的顺序是可变的,有需求是需要先打印test函数输出,最后在调用语法糖的内容,只需要吧func()放在print前面即可,不管是否是在前在后都是可以的.