惰性計算(Lazy evaluation),是指僅僅在真正需要執行的時候才計算表達式的值。充分利用其特性可以帶來很多便利。
避免不必要的計算,帶來性能的提升。
對於Python中的條件表達式 if x and y,在x爲false的情況下y表達式的值將不再計算。而對於if x or y,當x的值爲true的時候將直接返回,不再計算y的值。因此編程中可以利用該特性,在 and邏輯中,將小概率發生的條件放在前面或者在or邏輯中,將大概率發生的時間放在前面,有助於性能的提升。節省空間,使得無線循環的數據結構成爲可能。
Python中最經典的使用延遲計算的例子就是生成式表達器了,它盡在每次需要計算的時候才通過yield產生所需要的元素。
例:斐波那契數列在Python中實現起來很容易,使用yied對於while True也不會導致其他語言中所遇到的無線循環問題。
def fib():
a,b=0,1
while True:
yield a
a,b = b,a+b
from itertools import islice
print list(islice(fib(),5))