装饰器是一种特殊的函数,它可以在不改变原函数的情况下,给原函数添加一些额外的功能。装饰器的作用是让我们的代码更简洁、更优雅、更Pythonic(Python范儿)。
要理解装饰器,需要知道以下几个要点:函数是对象,可以赋值给变量,也可以作为参数传递给其他函数。函数可以嵌套定义在另一个函数内部,也可以从一个函数中返回另一个函数。装饰器本质上是一个接受一个函数作为参数,并返回一个包装了原函数的新函数的高阶函数。装饰器可以使用 @ 符号作为语法糖,放在原函数的定义之前,表示对原函数进行装饰。下面是一个简单的装饰器的例子:
# 定义一个装饰器函数def my_decorator(func): # 定义一个包装函数 def wrapper(): # 在原函数之前做一些事情 print("Before the function") # 调用原函数 func() # 在原函数之后做一些事情 print("After the function") # 返回包装函数 return wrapper# 定义一个需要被装饰的函数def my_function(): print("This is my function")# 使用 @ 符号对原函数进行装饰@my_decoratordef my_function(): print("This is my function")# 调用被装饰后的函数my_function()# 输出:# Before the function# This is my function# After the function