摘要:装饰器是一种特殊的函数,它可以接收一个函数或类作为参数,并返回一个修改或增强了原有功能的新函数或类。装饰器可以用来实现一些通用的功能,如日志记录、性能测试、权限检查、缓存等,而不需要修改原有的代码。装饰器的语法是在被装饰的函数或类前面加上@符号和装饰器的名称,
装饰器是一种特殊的函数,它可以接收一个函数或类作为参数,并返回一个修改或增强了原有功能的新函数或类。装饰器可以用来实现一些通用的功能,如日志记录、性能测试、权限检查、缓存等,而不需要修改原有的代码。装饰器的语法是在被装饰的函数或类前面加上@符号和装饰器的名称,例如:
@decoratordef func: passPython 中有很多内置的装饰器,也有很多第三方库提供了一些常用的装饰器。下面列举一些常见的装饰器:
@property:把一个方法转换为属性,可以用点号访问,也可以定义 setter 和 deleter 方法来实现属性的修改和删除。@staticmethod:把一个方法转换为静态方法,不需要传入 self 或 cls 参数,可以直接通过类名或实例调用。@classmethod:把一个方法转换为类方法,需要传入 cls 参数,表示当前类,可以通过类名或实例调用,通常用来实现一些类的工厂方法或备选构造函数。@functools.lru_cache:实现一个缓存机制,可以缓存最近调用的函数结果,提高性能,也可以指定缓存的大小和过期时间。@functools.wraps:帮助编写装饰器的辅助函数,可以把被装饰函数的元信息(如名称、文档、注解等)复制到装饰器函数中,避免装饰器函数覆盖或丢失原有函数的元信息。@Flask.route:Flask 框架中的一个装饰器,用来定义路由规则,把一个函数和一个 URL 关联起来,实现网页的请求和响应。@pytest.fixture:Pytest 框架中的一个装饰器,用来定义一个测试用例的前置条件或后置操作,可以作为参数传递给其他测试用例,实现测试用例的复用和隔离。来源:自由坦荡的湖泊AI