装饰器是Python函数协同的语法糖
,本质是把一个函数做为参数传递给另外一个函数。
# 装饰器之前函数协同
def a(b):
print(b)
def b():
pass
# 把 b 函数当成参数传递给 a 函数
>>> a(b)
<function b at 0x10487a598>
我们用装饰器
的方式,重新实现上面的效果。
# 装饰器版
def a(b):
print(b)
@a # 定义 a 函数为 b 函数的装饰器
def b():
pass
>>> b # 执行了 b 就等于 执行了 a(b)
<function b at 0x10487a598>
装饰器
就像变形金刚的铠甲,本来是一个普通人(普通函数),穿了铠甲(一个能完成特定功能的函数),就瞬间变得英勇神威。
那么执行了b()
呢?
# 就等于执行了 a(b)()
def a(b):
def f():
print('执行到我了')
return f
@a
def b():
pass
>>> b()
'执行到我了'
就是这样的!