快速上手 Python 装饰器

python.png

快速上手Python装饰器

Python 装饰器是一种强大的编程工具,可以用于修改、扩展或包装 Python 函数和类。本文将深入探讨装饰器的概念、语法以及它们在实际开发中的应用

为什么要使用装饰器

装饰器就是在不修改被装饰器对象源代码以及调用方式的前提下为被装饰的对象扩展新的功能

装饰器的应用场景

在实际项目开发中,有很多地方需要用到装饰器,比如性能计时器、登录验证和日志记录等

最简单的装饰器

定义一个最简单的装饰器

def timmer(fun):
    def wrapper():
        # 原函数调用前执行哪些代码
        res = fun() # 调用原函数
        # 原函数调用后执行哪些代码
        return res

    return wrapper


def index():
    print("Hello World!")

index = timmer(index)
index()

语法糖

下面是装饰器语法糖的写法【推荐】

接下来我们定义一个 timmer 装饰器,用于记录一亿次循环需要耗费多长时间

import time


def timmer(fun):
    def wrapper():
        start = time.time()
        res = fun()
        end = time.time()
        print(f"程序运行时间为:{round(end - start, 2)} 毫秒")
        return res

    return wrapper


@timmer
def index():
    for i in range(100000000):
        pass

index()
# 程序运行时间为:0.79 毫秒

在定义了装饰器后,传参时相当于给 wrapper 方法传参

def timmer(fun):
    def wrapper(a, b, c):
        print(a, b, c)  # 10 20 30
        return fun()

    return wrapper


@timmer
def index():
    print("Hello World!")


index(10, 20, 30)
# 程序运行时间为:0.79 毫秒

结论

Python 装饰器是一种强大而灵活的技术,可以帮助我们以更优雅和简洁的方式扩展和修改函数或类的行为

评论区
头像