Python装饰器

2023-12-18  本文已影响0人  小喜_ww

装饰器是Python中一种特殊的语法结构,它允许程序员在不修改被装饰对象源代码的情况下,通过在函数或类定义前加上“@装饰器函数”的形式来动态地扩展或修改原始行为,使得代码复用和可维护性更好。

装饰器本质是一个闭包函数,所以在讲解装饰器之前,需要先理解Python闭包函数的概念,闭包函数有以下几个特点:

装饰器-记录函数运行时间:

import time

def time_func(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(func.__name__ + "\n" + f"{end - start:0.4f}")
        return result
    return wrapper

@time_func
def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n-1) + fib(n-2)

print(fib(30))

在这个例子中,我们定义了一个计时器装饰器函数time_func,它接收一个函数作为参数,并返回一个新的函数wrapper。wrapper函数包含了原始函数fib的所有参数(使用args和*kwargs),并在执行原始函数之前记录起始时间,在执行结束后打印运行时间。

使用装饰器语法糖@time_func修饰fib函数,可以自动将fib传递给time_func函数,将fib函数修改为wrapper函数,并返回修改后的wrapper函数。最后我们调用fib(30)来测试程序的运行时间。

上一篇下一篇

猜你喜欢

热点阅读