在 Python 中,装饰器是一种特殊类型的函数,它们用于修改或增强其他函数或方法的行为。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。使用装饰器可以在不修改原函数代码的前提下,给函数添加新的功能。这在编写可复用代码和遵循单一职责原则时非常有用。
Python 装饰器的基本语法是使用 @
符号,后跟装饰器函数的名称。下面是一个基本的 Python 装饰器示例:
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
def say_hello():
print("Hello!")
say_hello()
在这个例子中,my_decorator
是一个装饰器。它接受一个函数 func
作为参数,并定义了一个内部函数 wrapper
。wrapper
函数在 func
被调用之前和之后执行一些代码。最后,my_decorator
返回 wrapper
函数。
使用 @my_decorator
语法,我们将 my_decorator
应用于 say_hello
函数。当我们调用 say_hello()
时,实际上是在调用经过 my_decorator
装饰后的 wrapper
函数。
重点
装饰器非常强大,常用于日志记录、性能测试、事务处理、权限校验等场景。它们也广泛应用于 Web 框架中,如 Flask 和 Django,用于路由处理和视图函数的修改。