yield是Python中和生成器密切相關的一個關鍵字
那麼什麼是生成器呢:
- 生成器是一個不斷產生值的函數
- 包含yield語句的函數是一個生成器
- 生成器每次產生一個值(yeild語句),函數就會被凍結,直到被喚醒後再產生一個值。
生成器寫法:
def gen(n):
for i in range(n):
yield i**2
for i in gen(1000000):
print(i)
普通寫法:
def square(n):
ls = [i**2 for i in range(n)]
return ls
for i in square(1000000):
print(i)
使用生成器的優勢:
- 節省存儲空間:生成器在每次調用的時候只產生一個值,所以只需要一個元素的存儲空間;而普通寫法則是產生一個列表,需要佔用大量的存儲空間
- 響應更加迅速
- 使用更靈活