美文网首页
Python装饰器

Python装饰器

作者: 小喜_ww | 来源:发表于2023-12-18 21:30 被阅读0次

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

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

    • 闭包函数是函数的嵌套,函数内还有函数,即外层函数嵌套一个内层函数。
    • 在外层函数定义局部变量,在内层函数通过nonlocal引用,并实现指定功能。

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

    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)来测试程序的运行时间。

    相关文章

      网友评论

          本文标题:Python装饰器

          本文链接:https://www.haomeiwen.com/subject/nnzbgdtx.html