本章是对python从yield到asyncio<第一章>中关于启动协程装饰器的补充, 涉及装饰器方面知识知识简单描述, 需要深入的可以查看流畅的python一书。
在流畅的python一书中关于装饰器的末尾作者引用了一些大神对于装饰器的理解, https://github.com/GrahamDumpleton/wrapt/blob/develop/blog/01-how-you-implemented-your-python-decorator-is-wrong.md
这篇文章由浅入深的讲解了实现装饰器的2种方式, 一种是我们常见的使用函数实现, 另外一种使用类包装器实现(重写__call__函数), 作者建议使用第二种类包装器的方式
1. 装饰器的本质是将一个函数变成另一个函数, 当我们调用已经被装饰过的函数test的时候, 实际上调用的是fa函数, 所以test.__doc__, __name__都会使用fa的属性, 所以需要使用wraps或者update_wrapper将传递过来的函数的属性进行更新.