0Pricing
Python For Kids · 课时

装饰器

学习如何使用装饰器修改或扩展函数

装饰器 是 CoddyKit 上的免费 Python For Kids 课时。 这是第 1 节课,共 5 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python For Kids 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python For Kids 课程共包含 5 节课。

装饰器简介

装饰器是 Python 中的一项强大功能,可以修改函数或方法的行为。装饰器通常用于在不修改函数代码的情况下为其添加功能。

在本课中,您将学习装饰器是什么、如何使用装饰器,以及如何创建自己的装饰器。

装饰器 — 插图 1

什么是装饰器

装饰器是一个函数,它将另一个函数作为输入,并返回一个添加了额外功能的新函数。装饰器通常与 @decorator_name 语法一起使用。

# Basic example of a decorator
def decorator(func):
    def wrapper():
        print("Before the function call")
        func()
        print("After the function call")
    return wrapper

@decorator
def say_hello():
    print("Hello!")

say_hello()

装饰器的工作原理

使用装饰器时,Python 会将原函数替换为装饰器返回的包装函数。

# How decorators work
def decorator(func):
    def wrapper():
        print("Wrapper called")
        func()
    return wrapper

@decorator
def greet():
    print("Greetings!")

print(greet.__name__)  # Outputs: wrapper
greet()

使用带参数的装饰器

通过在包装函数中使用 *args 和 **kwargs,装饰器可以处理带参数的函数:

# Decorator for functions with arguments
def decorator(func):
    def wrapper(*args, **kwargs):
        print(f"Arguments: {args}, {kwargs}")
        return func(*args, **kwargs)
    return wrapper

@decorator
def add(a, b):
    return a + b

print(add(3, 5))

串联多个装饰器

您可以在单个函数上使用多个装饰器。它们会按照从上到下的出现顺序应用:

# Chaining multiple decorators
def decorator1(func):
    def wrapper():
        print("Decorator 1")
        func()
    return wrapper

def decorator2(func):
    def wrapper():
        print("Decorator 2")
        func()
    return wrapper

@decorator1
@decorator2
def greet():
    print("Hello!")

greet()

创建带参数的装饰器

带参数的装饰器可以接收参数,从而实现更灵活的功能:

# Parameterized decorator
def repeat(times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(times):
                func(*args, **kwargs)
        return wrapper
    return decorator

@repeat(3)
def say_hello():
    print("Hello!")

say_hello()

装饰器的常见使用场景

装饰器常用于:

  • 记录函数调用及其参数。
  • 测量函数的执行时间。
  • 访问控制(例如检查用户权限)。
  • 缓存结果以提升性能。

Python 中的内置装饰器

Python 提供了一些内置装饰器,包括:

  • @staticmethod:定义静态方法。
  • @classmethod:定义类方法。
  • @property:定义属性方法。

装饰器的常见错误

以下是需要避免的一些错误:

  • 没有保留原函数的名称和文档字符串(请使用 functools.wraps)。
  • 对简单任务不必要地使用装饰器。
  • 忘记在包装函数中处理参数。

我们学到了什么

在本课中,您学习了:

  • 装饰器是什么,以及它们在 Python 中的工作方式。
  • 如何创建和使用基本装饰器、带参数装饰器和链式装饰器。
  • Python 中装饰器的常见使用场景和内置装饰器。

做得很好!让我们进入下一个主题。

装饰器 — 插图 11

常见问题解答

「装饰器」课时是免费的吗?

是的 — 「装饰器」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python For Kids 课程的其余内容,请升级到 CoddyKit PRO。 Python For Kids 课程共包含 5 节课。

「装饰器」这节课中我会学到什么?

学习如何使用装饰器修改或扩展函数 你通过在浏览器中直接运行的动手代码来练习 Python For Kids,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python For Kids 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python For Kids 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 5 节。

「装饰器」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python For Kids 课中编写并运行代码吗?

能。每节 Python For Kids 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 装饰器
  2. 生成器
  3. 上下文管理器(with 语句)
  4. 推导式(列表、集合和字典)
  5. 迭代器与可迭代对象
← 返回 Python For Kids