跳到主要内容

阐述什么是Python装饰器?

参考答案:

Python装饰器(Decorator)是一种高级Python功能,它允许用户修改或增强函数、方法或类的行为,而无需改变其源代码。装饰器本质上是一个接受函数作为参数并返回一个新函数的函数。

装饰器的基本语法是使用@符号,后跟装饰器的名称。当Python解释器遇到@符号时,它会将紧随其后的函数(被装饰的函数)作为第一个参数传递给装饰器函数,并返回装饰器函数的结果(通常是一个新函数)。

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

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

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

# 调用 say_hello 函数
say_hello()

输出:

Before function call
Hello!
After function call

在上面的示例中,my_decorator 是一个装饰器。它接受一个函数(func)作为参数,并返回一个新的函数(wrapper)。wrapper 函数在被装饰的函数(say_hello)之前和之后分别打印一些内容。

使用@my_decorator语法,我们将say_hello函数装饰为my_decorator。这意味着当我们调用say_hello时,实际上我们是在调用my_decorator(say_hello)返回的新函数(即wrapper函数)。

装饰器可以用于许多用途,例如记录函数调用的时间、检查函数的参数、缓存函数结果等。它们提供了一种灵活且强大的方式来修改或增强函数的行为,而无需修改函数本身的代码。