装饰器,参考文档https://realpython.com/primer-on-python-decorators
Function函数
- 函数也是object,可以作为参数传递
- 函数内部还可以定义函数
- 函数可以作为返回值,传递出去
简单Decorator
1 | def my_decorator(func): |
decorator包住一个函数,让函数增加新的功能。
原文中包含很多实际例子非常好,计时,调试,限速,注册插件。
类Decorator
@classmethod
, @staticmethod
, and @property
都属于内置decorator。
decorator也可以嵌套
say_whee = my_decorator(say_whee)
用decorator把原来的函数,添加功能后,变成了新的函数,只是名字还叫原来的函数。新函数是decorator的内置函数。decorator也是个函数。
python提供语法@decorator
就可以实现decorator。
通过这样的python特性,可以实现不修改原来代码的情况下,修改功能。