装饰器示例代码如下:
def my_decorator(func):
def wrapper():
print("Before the function is called.")
func()
print("After the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello, world!")
say_hello()
在这个示例中,我们定义了一个名为 my_decorator
的装饰器函数。它接受一个函数作为参数,并返回一个内部函数 wrapper
。
wrapper
函数包装了传入的函数,并添加了额外的功能,然后将其调用。在这个示例中, wrapper
在调用 say_hello
前打印一条消息,然后再调用该函数,最后在调用之后再打印一条消息。
要使用装饰器,我们只需要使用 @
符号来告诉 Python 我们要对 say_hello
函数应用 my_decorator
装饰器。这相当于执行以下代码:
say_hello = my_decorator(say_hello) # 因此,在解释器解释事执行此处
因此,当我们调用 say_hello()
时,实际上是调用了 wrapper()
函数。
这就是装饰器的基本工作原理:它是一个函数(或类)可以接收其他函数并返回一个新函数,而且可以在返回的新函数中添加一些额外的功能。通过使用装饰器,我们可以将代码分离成小块,每个块负责自己的单一职责。