前段时间,我在Twitter上问。
我很好奇你用#Python装饰器做什么?
我得到了相当惊人/有见地的回应。
我很好奇你用#Python装饰器做什么?
如果能在我们的文章中加入一些使用案例就更好了:https://t.co/gDOlhrazRC
- Bob Belderbos(@bbelderbos)2021年1月30日
对我来说,下一步显然是要看一些例子/用例。
所以下面是装饰器的5个有用的应用。
研究它们,然后在你自己的工作中应用类似的东西。
1.去除重复的代码
第一个是最简单的,因为@prashanttgs发布了一个伟大的例子。
对我来说,这更容易做到。
@conditional_function
def fun():
...
...的多个函数比这样做更容易。
def fun():
if conditional_function ...
对我来说,这显示了抽象化重复逻辑的好处,使你的函数(类)更精简。
2.2.防止不良输入
这是由@Halmsy强调的一个伟大的用例
还有一个很好的例子是pydantic模块及其验证器装饰器(@mikehawryluk)。
3.pytest
按照@brianokken的说法:pytest夹具和标记,包括参数化
是的,我们每天都在使用这些装饰器,我们喜欢它们。
固定器装饰器的源代码。
4.记录
@Kay_Hoogland指出了一个很酷的项目,叫做memo。
在那里我们看到一个很酷的time_taken装饰器。
本周我们还自己添加了一个小的定时器装饰器提示。
在这里,我们用一个装饰器来为一个函数的执行时间计时:pic.twitter.com/EXiEeTJsRe
- PyBites(@pybites)2021年1月31日
5.认证
看看主要网络框架中用于访问控制的装饰器是很有意思的。
flask.palletsprojects.com/en/1.1.x/pa…
我希望这篇文章能给你一些灵感,在你的工作中更多地使用这种强大的设计模式。
如果你想写一些自己的东西,请查看我们平台上专门的Decorators学习路径。

在学习了两个重要的模式:装饰器和上下文管理器之后,你的Python工具包将不再是原来的样子了。你可以在我们的平台上编写12个相关的Bites ...
好了,结束了(Julian_让我把这句话写进去,开玩笑的[不,他没有!--Julian])_。
编码愉快
- 鲍勃