极客前沿

Python装饰器入门:一步步理解与使用

2026-05-25 01:30
DEV Tutorial
查看原文

从零开始,用简单例子学会Python装饰器的概念、安装环境并亲手写第一个装饰器。

准备环境:先装好Python

如果你还没装Python(一种编程语言,用来写代码),先去官网 python.org 下载最新版。安装时记得勾选“Add Python to PATH”,这样在命令行就能直接使用。装好后打开终端(Windows用cmd,Mac用终端),输入 python --version 看到版本号就成功了。

理解装饰器:就像给函数加个“包装”

装饰器(Decorator)是一个特殊的函数,它可以“包装”另一个函数,在它执行前后自动做一些额外操作。比如你想记录函数运行时间,不用改原函数,加个装饰器就行。装饰器用 @ 符号放在函数定义前。

Tutorial Image

安装必要的库(可选)

本教程只用Python内置功能,不需要额外安装。但如果你以后想用更高级的装饰器,可以装 functools(Python自带,无需安装)或 wrapt(用 pip install wrapt 安装)。

亲手写第一个装饰器

  1. 打开任意文本编辑器,新建文件 my_decorator.py
  2. 输入以下代码:
    def my_decorator(func):
        def wrapper():
            print("在函数执行前做点什么")
            func()
            print("在函数执行后做点什么")
        return wrapper
    
    @my_decorator
    def say_hello():
        print("Hello!")
    
    say_hello()
  3. 保存文件,在终端运行 python my_decorator.py。你会看到输出:
    在函数执行前做点什么
    Hello!
    在函数执行后做点什么
  4. 常见坑:装饰器定义时 wrapper 函数必须返回,否则原函数会失效。另外,如果原函数有参数,装饰器里的 wrapper 也要接收参数,用 *args, **kwargs 搞定。

验证是否成功

运行上面的代码,如果看到了三行输出,说明装饰器生效了。你可以试着修改 wrapper 里的内容,比如改成记录时间:import time 然后 print(time.time())

下一步可以做什么

  • 学习带参数的装饰器(比如 @my_decorator(arg))。
  • functools.wraps 保留原函数的信息(比如函数名、文档字符串)。
  • 尝试写一个“计时装饰器”,测量函数运行时间。

内容来源

DEV Tutorial

发布时间

2026-05-25 01:30

返回 AI技术