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
这个输出顺序说明,装饰器实际上“装饰”了我们的函数,在函数执行前后插入了新的操作。
装饰器可以被用于很多用途,例如:
- 日志记录:记录函数的调用信息,参数等
- 性能测试:记录函数的执行时间
- 验证:检查函数输入的合法性
- 修改函数行为:比如,在 Flask 中用装饰器定义路由
装饰器是理解和使用 Python 高级特性的一个重要部分,它可以帮助我们写出更加简洁,可读和重用的代码。