Python 装饰器:穿上这件魔法外套,函数自己会加buff
你有没有遇到过这种事?
写了一个函数,跑得好好的。突然需求来了:给每个函数加个日志。于是你开始在每个函数里粘贴复制。
写了两三个,你已经想砸电脑了。写了十几个……恭喜你,你已经成功从程序员转型为人肉复制粘贴机器。
这时候,Python 装饰器(Decorator)就像救星一样出现了。它就像一件魔法外套——给你的函数穿上它,函数就自动获得了额外能力,而你不用改函数内部的一行代码。
装饰器到底是个啥?
说人话:装饰器就是一个函数,它接收另一个函数作为参数,然后返回一个增强版的函数。
就像你去吃火锅——你点了一份毛肚(原始函数),服务员给你加了一份特制蒜料(装饰器),毛肚还是那个毛肚,但吃起来更香了。
写一个最简单的装饰器
def log_decorator(func):
def wrapper(*args, **kwargs):
print("准备调用:", func.__name__)
result = func(*args, **kwargs)
print("调用完成:", func.__name__)
return result
return wrapper
@log_decorator
def say_hello(name):
print("你好,", name, "!")
say_hello("小明")总结
装饰器就是 Python 给程序员的一件魔法斗篷。Flask 的路由、Django 的权限验证——全是装饰器在背后工作。
下次看到同事在疯狂复制粘贴日志代码的时候,走过去拍拍他的肩膀:“兄弟,了解一下装饰器?”