我知道@staticmethod
,@classmethod
和@property
,但只能通过分散的文档。 Python内置的所有函数装饰器是什么?是在文档中吗?是否在某处保留了最新的列表?
答案 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)
没有所有装饰者的列表。没有所有功能的列表。没有所有课程的列表。
装饰器是一种方便的工具,用于定义跨函数,方法或类的公共方面。有内置装饰器。此外,还有许多酷炫无用的装饰者。以同样的方式,有任何数量的酷和无用的类。