惰性计算、惰性求值,是计算机编程中的一个概念,也是函数式编程的一个重要特征。它的目的在于最小化计算机的工作任务,不到必须的时候尽可能地避免执行代码。
Python 是一个支持多种范式的编程语言,map / reduce 等函数式编程的招牌角色在 Python 中也起着重要角色,但 Python 并不是一门纯粹的函数式编程语言,很多函数式编程 的重要特性都没有得到完全支持。
Python 中的 or
关键字就是个惰性计算的实例,在 a or b
表达式中, 如果 a
为真则会终止命令的继续执行,即使后面的代码会报出异常。
惰性计算对于函数式编程的一个重要意义在于“尾递归”的优化。尾递归和惰性计算一样,都是函数式编程中的重要特性。
虽然在语言层面没有得到完全支持,但是 Django 等框架和库并没有放弃惰性计算的性能优势,其 lazy()
, ugettext_lazy()
等函数就是惰性计算的实现。
http://swizec.com/blog/python-and-lazy-evaluation/swizec/5148