装饰者 是修改其他函数的功能的函数。装饰器有助于让我们的代码更简短。
当您需要扩展您不想修改的函数功能时,这是很理想的。
例如:

def decor(func):
  def wrap():
    print("============")
    func()
    print("============")
  return wrap

def print_text():
  print("Hello world!")

decorated = decor(print_text)
decorated()

结果:

Hello world!

我们定义了一个名为 decor 的函数,它有一个单一的参数 func。
在 decor 中,我们定义了一个名为 wrap 的嵌套函数。
wrap函数将打印一个字符串,然后调用 func(),并打印另一个字符串。
我们可以说,装饰变量是 print_text 的装饰版本 - 它是 print_text 加上一些东西。

这是通过重新赋值包含我们的函数的变量来完成的:

print_text = decor(print_text)
print_text()

Python通过预先用装饰器名称和 @symbol 预定义函数定义来提供支持,以便在装饰器中包装函数。
如果我们正在定义一个函数,我们可以使用@符号来“装饰”它:

def decor(func):
  def wrap():
    print("============")
    func()
    print("============")
  return wrap

@decor
def print_text():
  print("Hello world!")

print_text()

这将与上面的代码具有相同的结果。

一个函数可以有多个装饰器。

最后修改:2022 年 12 月 05 日
如果觉得我的文章对你有用,请随意赞赏