欢迎访问宙启技术站
智能推送

Python中如何定义装饰器函数?有哪些常见的装饰器?

发布时间:2023-06-21 02:28:14

Python中的装饰器是一种特殊的函数,它可以接受一个函数(或类)作为输入,并返回一个新的、修改后的函数(或类)。装饰器的作用是在不改变被修饰函数的代码的情况下,对其功能进行增强或修改。在Python中,我们可以使用@符号来直接应用装饰器。

例如,下面的代码定义了一个装饰器,它可以在执行函数之前输出一条消息:

def before_execution(func):
    def wrapper():
        print("Executing function...")
        func()
    return wrapper

@before_execution
def my_function():
    print("Hello world")

my_function()

输出结果为:

Executing function...
Hello world

常见的装饰器有:

1. @classmethod:为类方法添加装饰器;

2. @staticmethod:为静态方法添加装饰器;

3. @property:将函数转换为属性,使属性可以像变量一样访问;

4. @abstractmethod:声明抽象方法,在子类中必须实现该方法;

5. @wraps:使用此装饰器可以保留原始函数的文档字符串、名称和注释信息;

6. @timer:可以测量函数的执行时间;

7. @cached_property:为属性添加缓存功能,可以避免多次计算。

总之,装饰器是Python中非常有用的功能,可以让我们更方便地修改已有函数或类的功能,增强程序的灵活性和可扩展性。