Python 中如何定义和使用装饰器?

推荐答案

-- -------------------- ---- -------
--- -------------------
    --- -------------- ----------
        ---------------- -- --------- ------ --- -------- -- ---------
        ------ - ----------- ---------
        ---------------- -- --------- ----- --- -------- -- ---------
        ------ ------
    ------ -------

-------------
--- ------------
    ---------------

-----------

本题详细解读

装饰器的定义

装饰器是 Python 中的一种高级功能,它允许你在不修改原函数代码的情况下,为函数添加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。

装饰器的使用

在上面的代码中,my_decorator 是一个装饰器函数。它接受一个函数 func 作为参数,并返回一个新的函数 wrapperwrapper 函数在调用 func 之前和之后分别打印一些信息。

装饰器的语法糖

使用 @ 符号可以将装饰器应用到函数上。例如,@my_decorator 应用于 say_hello 函数,相当于执行了以下代码:

装饰器的执行流程

  1. 当调用 say_hello() 时,实际上调用的是 wrapper 函数。
  2. wrapper 函数首先打印 "Something is happening before the function is called."
  3. 然后调用原始的 say_hello 函数,并打印 "Hello!"
  4. 最后,wrapper 函数打印 "Something is happening after the function is called." 并返回结果。

装饰器的应用场景

装饰器常用于日志记录、权限校验、性能测试等场景,能够在不修改原函数代码的情况下,为函数添加额外的功能。

纠错
反馈