Python 装饰器

装饰器

装饰器是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()
'执行到我了'

就是这样的!

Python 教程 Python 入门 Python 时间 Python JSON