
Python
现代语言的诸多特性都能在函数式编程的鼻祖lisp中找到相似之处。装饰器就相当于lisp里的advice,它能够在函数调用之前和之后给出建议,这实际上就是统一添加前置与后置逻辑。例如,要给一系列函数添加日志功能,且无需关注函数内部的具体逻辑时,就可以使用advice,将日志逻辑写在一处,而不必逐个修改每个函数。
Python对这一概念进行了扩展,使其能够处理类,从而成为一种针对class或者function进行修改的通用元编程机制。简单来说,就是输入为class时输出是另一个class,输入为function时输出是function的特殊函数。如果您有
Java背景,这个特性能够实现类似某些
Java框架中AOP(面向切面编程)的功能。其实一个普通的功能,在
Java领域常常被吹嘘成高大上的设计模式,还整出一些新名词,所以很多人瞧不上
Java。