【发布时间】:2010-10-04 03:13:00
【问题描述】:
虽然我喜欢认为自己是一名相当称职的 Python 编码员,但我从未能够理解的语言的一个方面是装饰器。
我知道它们是什么(表面上),我已经阅读了有关 Stack Overflow 的教程、示例和问题,并且我了解语法,可以自己编写,偶尔使用 @classmethod 和 @staticmethod,但我从来没有想过使用装饰器来解决我自己的 Python 代码中的问题。我从来没有遇到过这样的问题:“嗯……这看起来像是装饰师的工作!”
所以,我想知道你们是否可以提供一些在自己的程序中使用装饰器的例子,希望我能“啊哈!”时刻并得到它们。
【问题讨论】:
-
此外,装饰器对记忆很有用——即缓存函数的计算缓慢的结果。装饰器可以返回一个检查输入的函数,如果它们已经被呈现,则返回一个缓存的结果。
-
请注意,自 2011 年 2 月发布的 Python 3.2 以来,Python 有一个内置的装饰器
functools.lru_cache,它与 Peter 所说的完全一样。 -
Python Decorator Library 的内容应该让您了解它们的其他用途。