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

Python装饰器函数:定义和使用

发布时间:2023-05-26 17:01:47

Python的装饰器函数是一种函数,可以用于修改或增强函数或类的行为。

装饰器函数的定义格式如下:

def decorator_function(original_function):
    # some code here
    return modified_function

其中,decorator_function是装饰器函数的名称,original_function是要被修改的函数的名称,modified_function是修改后的函数的名称。

装饰器函数可以用于修改函数的输入、输出,也可以用于记录函数的执行时间、调用次数等信息。

例如,下面的装饰器函数用于记录函数的执行时间:

import time

def timing_decorator(original_function):
    def modified_function(*args, **kwargs):
        start_time = time.time()
        result = original_function(*args, **kwargs)
        end_time = time.time()
        print(f"Function {original_function.__name__} took {end_time - start_time:.2f} seconds to execute.")
        return result
    return modified_function

timing_decorator函数接受一个函数作为参数,并返回一个修改后的函数modified_functionmodified_function函数在执行original_function函数前记录了当前时间start_time,在执行完original_function函数后记录了当前时间end_time,并打印了函数的执行时间。

下面是一个使用装饰器函数的例子:

@timing_decorator
def slow_function():
    time.sleep(2)

slow_function()

在这个例子中,@timing_decorator表示对slow_function函数应用timing_decorator装饰器函数。执行slow_function()函数会自动调用timing_decorator(slow_function)函数,返回修改后的函数modified_function,并执行modified_function函数,即:

modified_function(*args, **kwargs) = timing_decorator(slow_function)(*args, **kwargs)

执行结果为:

Function slow_function took 2.00 seconds to execute.

从结果可以看出,slow_function函数执行了2秒钟,timing_decorator函数记录了函数的执行时间。这就是装饰器函数的作用。

使用装饰器函数可以使代码更加简洁可读,增强代码的可维护性和扩展性。建议大家多学习和使用Python的装饰器函数,以提高编程技能。