python 装饰器

装饰器是 Python 中一种功能强大的语法特性,它可以用于在不修改原函数代码的情况下,动态地扩展或修改函数的行为。装饰器本质上是一个函数或类,它接受一个函数作为参数,并返回一个新的函数或类。

下面是装饰器的详细解释和示例:

装饰器的定义:装饰器是一个闭包函数,它将被装饰的函数作为参数,并返回一个新的函数。装饰器通常用于对函数进行增强、修改或包装。

装饰器的使用场景:装饰器可以用于实现日志记录、性能计时、权限验证、缓存等功能。它可以在不修改原函数代码的情况下,通过在函数定义前加上 @装饰器名称 的方式来应用装饰器。

下面是一个示例,演示如何使用装饰器来记录函数的执行时间:

python

import time

def timer_decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        execution_time = end_time - start_time
        print(f"函数 {func.__name__} 执行时间:{execution_time:.6f} 秒")
        return result
    return wrapper

@timer_decorator
def my_function():
    # 假设这是一个耗时的操作
    time.sleep(2)

my_function()

解释以上示例代码的关键部分:

timer_decorator 是一个装饰器函数,它接受一个函数作为参数,并返回一个新的函数 wrapper。
wrapper 函数是装饰器的实际逻辑,它在被装饰的函数执行前后,通过记录时间来计算函数的执行时间。
在定义 my_function 函数之前加上 @timer_decorator,相当于将 my_function 函数传递给 timer_decorator 并重新赋值给 my_function。这样,在调用 my_function 时,实际上是调用了被装饰后的新函数 wrapper。

你可能感兴趣的:(python,装饰器)