Python如何详细使用@函数装饰器?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1302个文字,预计阅读时间需要6分钟。
在《Python 面向对象》章节中,我们已介绍过 Python 内置的 3 种函数装饰器,分别是 `@staticmethod`、`@classmethod` 和 `@property`。其中,`staticmethod()`、`classmethod()` 和 `@property` 都是 Python 的内置函数。所谓函数装饰器,是指用于修改或增强函数功能的特殊函数。
前面章节中,我们已经讲解了 Python 内置的 3 种函数装饰器,分别是@staticmethod、@classmethod 和 @property,其中 staticmethod()、classmethod() 和 property() 都是 Python 的内置函数。那么,函数装饰器的工作原理是怎样的呢?假设用 funA() 函数装饰器去装饰 funB() 函数,如下所示:
#funA 作为装饰器函数
def funA(fn):
#...
fn() # 执行传入的fn参数
#...
return '...'
@funA
def funB():
#...
实际上,上面程序完全等价于下面的程序:
def funA(fn): #... fn() # 执行传入的fn参数 #... return '...' def funB(): #... funB = funA(funB) 通过比对以上 2 段程序不难发现,使用函数装饰器 A() 去装饰另一个函数 B(),其底层执行了如下 2 步操作:
- 将 B 作为参数传给 A() 函数;
- 将 A() 函数执行完成的返回值反馈回 B。
本文共计1302个文字,预计阅读时间需要6分钟。
在《Python 面向对象》章节中,我们已介绍过 Python 内置的 3 种函数装饰器,分别是 `@staticmethod`、`@classmethod` 和 `@property`。其中,`staticmethod()`、`classmethod()` 和 `@property` 都是 Python 的内置函数。所谓函数装饰器,是指用于修改或增强函数功能的特殊函数。
前面章节中,我们已经讲解了 Python 内置的 3 种函数装饰器,分别是@staticmethod、@classmethod 和 @property,其中 staticmethod()、classmethod() 和 property() 都是 Python 的内置函数。那么,函数装饰器的工作原理是怎样的呢?假设用 funA() 函数装饰器去装饰 funB() 函数,如下所示:
#funA 作为装饰器函数
def funA(fn):
#...
fn() # 执行传入的fn参数
#...
return '...'
@funA
def funB():
#...
实际上,上面程序完全等价于下面的程序:
def funA(fn): #... fn() # 执行传入的fn参数 #... return '...' def funB(): #... funB = funA(funB) 通过比对以上 2 段程序不难发现,使用函数装饰器 A() 去装饰另一个函数 B(),其底层执行了如下 2 步操作:
- 将 B 作为参数传给 A() 函数;
- 将 A() 函数执行完成的返回值反馈回 B。

