Python 装饰器:给函数穿上皇帝的新衣

Python基础 Feb 1, 2025

一个神奇的语法糖

Python 装饰器大概是初学者遇到的第一个“看起来很厉害但完全看不懂”的东西。它就是一个把函数塞进另一个函数里加工一下再吐出来的工具。

from datetime import datetime

def log_calls(func):
    def wrapper(*args, **kwargs):
        print(f'[{datetime.now()}] 调用了 {func.__name__}')
        return func(*args, **kwargs)
    return wrapper

@log_calls
def say_hello(name):
    print(f'你好啊,{name}!')

say_hello('小明')

@log_calls 就像给函数贴了个标签,它自动就有了日志功能。用途:计时、缓存、权限校验、重试机制。小坑:用 @functools.wraps 保护函数的 __name__。

Tags