https://www.cnblogs.com/cicaday/p/python-decorator.html
Python的装饰器和Java的注解(Annotation)并不是同一回事,和C#中的特性(Attribute)也不一样,完全是两个概念。
装饰器的理念是对原函数、对象的加强,相当于重新封装,所以一般装饰器函数都被命名为wrapper()
,意义在于包装。函数只有在被调用时才会发挥其作用。比如@logging
装饰器可以在函数执行时额外输出日志,@cache
装饰过的函数可以缓存计算结果等等。
而注解和特性则是对目标函数或对象添加一些属性,相当于将其分类。这些属性可以通过反射拿到,在程序运行时对不同的特性函数或对象加以干预。比如带有Setup
的函数就当成准备步骤执行,或者找到所有带有TestMethod
的函数依次执行等等。
https://www.cnblogs.com/eilinge/p/9705516.html
https://betacat.online/posts/2016-10-23/python-closure/
闭包函数相对与普通函数会多出一个__closure__
的属性,里面定义了一个元组用于存放所有的cell
对象,每个cell
对象一一保存了这个闭包中所有的外部变量。
https://betacat.online/posts/2016-10-30/python-decorator-more/
https://www.runoob.com/w3cnote/python-yield-used-analysis.html
https://www.runoob.com/w3cnote/python-func-decorators.html