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中非常有用的功能,可以让我们更方便地修改已有函数或类的功能,增强程序的灵活性和可扩展性。
