Python在标准库中是否有装饰器?

Li *_*oyi 17 python decorator

除了@staticmethod@classmethod?大多数语言都有一些使用大多数语言功能的基本库.

似乎我发现自己制作的许多装饰器都是很多人都会使用的东西,但我还没有找到任何内置的python装饰器来做它们.有这样的事吗?

agf*_*agf 21

属性通常用作装饰器.

functools有几个功能通常用作装饰,例如total_ordering,update_wrapped,lru_cache,和wraps.

contextlib有contextmanager装饰器.

请记住,您可以将任何函数用作装饰器:

@decorator
def function(): pass
Run Code Online (Sandbox Code Playgroud)

就像是一样的

def function(): pass
function = decorator(function)
Run Code Online (Sandbox Code Playgroud)

为了有用,它们通常需要期望可调用作为参数,并且它们需要返回可调用对象.(这property是第二部分的例外.)

课程也可以完全相同的方式进行装饰.

Python Wiki上还有一个装饰器列表.其中一些是在标准库中,有些则不是.