Python 装饰器:那个戴着礼帽的魔法师

Python 装饰器:那个戴着礼帽的魔法师

装饰器就像穿衣服——你还是你,但多了点本事。早上穿T恤可以出门,穿外套保暖,戴口罩防病毒。装饰器不改变你,但让你多了点本事。

def wear_jacket(func):
    def wrapper():
        print("穿上外套")
        return func()
    return wrapper

@wear_jacket
def go_outside():
    print("出门了")
go_outside()

实际用途:记时、权限检查、日志记录、缓存。用 functools.wraps 可保留原函数名称。

from functools import wraps
def timer(func):
    @wraps(func)
    def wrapper(*a,**kw):
        import time
        start=time.time()
        r=func(*a,**kw)
        print(f"跑了{time.time()-start:.3f}秒")
        return r
    return wrapper

装饰器就是函数界的出门穿搭——人还是那个人,但加上装饰之后,牛逼多了。

comments powered by Disqus