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

在Python中的装饰器函数使用

发布时间:2023-06-29 15:18:45

装饰器函数是Python中一种特殊的函数,它可以在不改变原函数代码的情况下,对函数的功能进行扩展或修改。

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

def decorator_func(original_func):
    def wrapper_func(*args, **kwargs):
        # 在调用原函数之前的操作
        # 可以在这里添加功能扩展的代码
        result = original_func(*args, **kwargs)
        # 在调用原函数之后的操作
        # 可以在这里添加功能扩展的代码
        return result
    return wrapper_func

在上述代码中,original_func表示被装饰的函数。在wrapper_func函数中,我们可以在调用原函数之前和之后添加功能扩展的代码。

使用装饰器函数时,可以使用@符号将装饰器函数应用到目标函数上,例如:

@decorator_func
def target_func():
    print("Hello, World!")

下面我们来看一个实际的例子,使用装饰器函数来计算函数的运行时间:

import time

def calculate_run_time(original_func):
    def wrapper_func(*args, **kwargs):
        start_time = time.time()
        result = original_func(*args, **kwargs)
        end_time = time.time()
        run_time = end_time - start_time
        print("函数运行时间:{}秒".format(run_time))
        return result
    return wrapper_func

@calculate_run_time
def sum_numbers():
    total = 0
    for i in range(1, 10000001):
        total += i
    return total

sum_numbers()

在上述代码中,我们定义了一个装饰器函数calculate_run_time,它会计算被装饰函数的运行时间,并在结束时打印出来。然后我们使用@calculate_run_time将装饰器应用到了sum_numbers函数上。

通过运行上面的代码,会输出函数运行时间。

在实际应用中,装饰器函数可以用于日志记录、性能分析、权限校验等方面。通过使用装饰器函数,我们可以在不修改原函数的情况下,简洁地实现功能的扩展和修改。