Python生成器是一種特殊的迭代器,它允許你在需要時才生成值,從而節省內存并提高效率
yield
關鍵字:在定義生成器函數時,使用yield
關鍵字返回一個值。當生成器函數被調用時,它返回一個生成器對象,而不是直接執行函數體。當生成器對象被迭代時,函數體將被執行,直到遇到yield
關鍵字,此時函數將返回yield
后面的值,并暫停執行。下次迭代時,函數將從暫停的地方繼續執行,直到再次遇到yield
關鍵字。def simple_generator():
yield 1
yield 2
yield 3
gen = simple_generator()
for value in gen:
print(value)
for
循環迭代:生成器對象可以直接用于for
循環進行迭代。def simple_generator():
yield 1
yield 2
yield 3
for value in simple_generator():
print(value)
next()
函數迭代:可以使用next()
函數獲取生成器對象的下一個值。當生成器對象中沒有更多值時,next()
函數將引發StopIteration
異常。def simple_generator():
yield 1
yield 2
yield 3
gen = simple_generator()
while True:
try:
value = next(gen)
print(value)
except StopIteration:
break
send()
方法發送值:生成器對象還支持send()
方法,允許你在迭代過程中向生成器發送值。當生成器接收到一個值時,它將在下一次yield
處返回該值。def simple_generator():
x = 0
while True:
value = yield x
if value is not None:
x = value
else:
break
gen = simple_generator()
print(next(gen)) # 輸出 0
print(gen.send(5)) # 輸出 5
print(next(gen)) # 輸出 5
通過這些方法,Python生成器可以實現高效的迭代,節省內存并提高程序性能。