装饰器的的几种用途:

  1. 注入参数(提供默认参数,生成参数)

  2. 记录函数行为(日志、缓存、计时什么的)

  3. 预处理/后处理(配置上下文什么的)

  4. 修改调用时的上下文(线程异步或者并行,类方法)