Python - 所有内置的装饰器是什么?

时间:2009-01-26 15:34:48

标签: python decorator

我知道@staticmethod@classmethod@property,但只能通过分散的文档。 Python内置的所有函数装饰器是什么?是在文档中吗?是否在某处保留了最新的列表?

4 个答案:

答案 0 :(得分:32)

我不这么认为。装饰器与普通功能没有区别,您只能以更高级的方式调用它们。

为了找到所有这些,请尝试搜索Built-in functions列表,因为正如您在Python glossary中看到的那样,装饰器语法只是一个语法糖,因为以下两个定义创建相同的函数(复制此示例来自词汇表):

def f(...):
    ...
f = staticmethod(f)

@staticmethod
def f(...):

因此,任何返回另一个函数的内置函数都可以用作装饰器。问题是 - 以这种方式使用它是否有意义? : - )

functools模块包含一些可用作装饰器的函数,但它们不是您要求的内置函数。

答案 1 :(得分:13)

它们不是内置的,但this library示例装饰器非常好。

作为Abgan says,内置函数列表可能是最好看的地方。虽然,因为装饰器也可以作为类实现,但不能保证它是全面的。

答案 2 :(得分:0)

装饰器甚至不需要返回函数。我之前使用过@atexit.register

答案 3 :(得分:-2)

没有所有装饰者的列表。没有所有功能的列表。没有所有课程的列表。

装饰器是一种方便的工具,用于定义跨函数,方法或类的公共方面。有内置装饰器。此外,还有许多酷炫无用的装饰者。以同样的方式,有任何数量的酷和无用的类。