Python装饰器入门:一步步理解与使用
从零开始,用简单例子学会Python装饰器的概念、安装环境并亲手写第一个装饰器。
准备环境:先装好Python
如果你还没装Python(一种编程语言,用来写代码),先去官网 python.org 下载最新版。安装时记得勾选“Add Python to PATH”,这样在命令行就能直接使用。装好后打开终端(Windows用cmd,Mac用终端),输入 python --version 看到版本号就成功了。
理解装饰器:就像给函数加个“包装”
装饰器(Decorator)是一个特殊的函数,它可以“包装”另一个函数,在它执行前后自动做一些额外操作。比如你想记录函数运行时间,不用改原函数,加个装饰器就行。装饰器用 @ 符号放在函数定义前。
安装必要的库(可选)
本教程只用Python内置功能,不需要额外安装。但如果你以后想用更高级的装饰器,可以装 functools(Python自带,无需安装)或 wrapt(用 pip install wrapt 安装)。
亲手写第一个装饰器
- 打开任意文本编辑器,新建文件
my_decorator.py。 - 输入以下代码:
def my_decorator(func): def wrapper(): print("在函数执行前做点什么") func() print("在函数执行后做点什么") return wrapper @my_decorator def say_hello(): print("Hello!") say_hello() - 保存文件,在终端运行
python my_decorator.py。你会看到输出:
在函数执行前做点什么
Hello!
在函数执行后做点什么 - 常见坑:装饰器定义时
wrapper函数必须返回,否则原函数会失效。另外,如果原函数有参数,装饰器里的wrapper也要接收参数,用*args, **kwargs搞定。
验证是否成功
运行上面的代码,如果看到了三行输出,说明装饰器生效了。你可以试着修改 wrapper 里的内容,比如改成记录时间:import time 然后 print(time.time())。
下一步可以做什么
- 学习带参数的装饰器(比如
@my_decorator(arg))。 - 用
functools.wraps保留原函数的信息(比如函数名、文档字符串)。 - 尝试写一个“计时装饰器”,测量函数运行时间。
内容来源
DEV Tutorial
发布时间
2026-05-25 01:30