我终于弄懂了 Python 的装饰器(一)
此系列文档:
一、装饰器基础(什么是装饰器)
Python的函数是对象
要了解装饰器,您必须首先了解函数是Python中的对象。这具有重要的联系。
让我们来看一个简单的例子:
请记住这一点,我们将在不久后回头再说。
Python函数的另一个有趣特性是可以在另一个函数中定义它们!
函数参考
OK,应该还在看吧?现在开始有趣的部分...
您已经看到函数是对象。
因此,函数:
可以分配给变量
可以在另一个函数中定义
这意味着**一个函数可以return
另一个功能**。
还有更多的内容!
如果可以return
一个函数,则可以将其中一个作为参数传递:
好吧,您只具备了解装饰器所需的所有信息。
您会看到,装饰器是“包装器(wrappers)”,这意味着它们使您可以在装饰函数之前和之后执行代码,而无需修改函数本身的代码内容。
手工进行装饰
您将知道如何进行手动操作:
现在,您可能希望每次调用a_stand_alone_function
时a_stand_alone_function_decorated
都调用它。
这很简单,只需a_stand_alone_function
用以下方法返回的函数覆盖my_shiny_new_decorator
:
装饰器神秘化
这里展示一下使用装饰器的语法:
是的,仅此而已。@decorator
只是实现以下目的的捷径:
装饰器只是装饰器设计模式的pythonic变体。
Python中嵌入了几种经典的设计模式来简化开发(例如迭代器)。
当然,您可以累加装饰器:
使用Python装饰器语法:
您设置装饰器事项的顺序是很重要的,如::
本文首发于BigYoung小站:http://www.bigyoung.cn
版权声明: 本文为 InfoQ 作者【Young先生】的原创文章。
原文链接:【http://xie.infoq.cn/article/a6ce01b80b7ed491c822f44df】。未经作者许可,禁止转载。
评论 (1 条评论)