Python 装饰器

77 阅读1分钟

Python 的装饰器(Decorator)是一个非常强大且有用的工具,能够修改或增强函数或类的行为。本质上,它是一个接受函数或类作为参数并返回新函数或类的函数。

以下是一个简单的装饰器示例:

def my_decorator(func):
    def wrapper():
        print("Before the function call")
        func()
        print("After the function call")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

在上面的代码中,my_decorator 是一个装饰器,它接收一个函数 func 作为参数。在装饰器内部,我们定义了一个新的函数 wrapper,在这个函数中,我们可以执行一些额外的操作,并调用原始的 func。最后,我们返回新的 wrapper 函数。

my_decorator 的用法是把它放在定义函数 say_hello 之上,加上 @ 符号。这就相当于执行了 say_hello = my_decorator(say_hello)。这样,每次我们调用 say_hello(),实际上就是调用 wrapper(),输出会是:

Before the function call
Hello!
After the function call

这个输出顺序说明,装饰器实际上“装饰”了我们的函数,在函数执行前后插入了新的操作。

装饰器可以被用于很多用途,例如:

  1. 日志记录:记录函数的调用信息,参数等
  2. 性能测试:记录函数的执行时间
  3. 验证:检查函数输入的合法性
  4. 修改函数行为:比如,在 Flask 中用装饰器定义路由

装饰器是理解和使用 Python 高级特性的一个重要部分,它可以帮助我们写出更加简洁,可读和重用的代码。