推荐答案
-- -------------------- ---- ------- --- ------------------- --- -------------- ---------- ---------------- -- --------- ------ --- -------- -- --------- ------ - ----------- --------- ---------------- -- --------- ----- --- -------- -- --------- ------ ------ ------ ------- ------------- --- ------------ --------------- -----------
本题详细解读
装饰器的定义
装饰器是 Python 中的一种高级功能,它允许你在不修改原函数代码的情况下,为函数添加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。
装饰器的使用
在上面的代码中,my_decorator
是一个装饰器函数。它接受一个函数 func
作为参数,并返回一个新的函数 wrapper
。wrapper
函数在调用 func
之前和之后分别打印一些信息。
装饰器的语法糖
使用 @
符号可以将装饰器应用到函数上。例如,@my_decorator
应用于 say_hello
函数,相当于执行了以下代码:
say_hello = my_decorator(say_hello)
装饰器的执行流程
- 当调用
say_hello()
时,实际上调用的是wrapper
函数。 wrapper
函数首先打印"Something is happening before the function is called."
。- 然后调用原始的
say_hello
函数,并打印"Hello!"
。 - 最后,
wrapper
函数打印"Something is happening after the function is called."
并返回结果。
装饰器的应用场景
装饰器常用于日志记录、权限校验、性能测试等场景,能够在不修改原函数代码的情况下,为函数添加额外的功能。