是的,Python迭代器協議可以用于生成器。生成器是一種特殊的迭代器,它允許你在函數中使用yield
關鍵字返回一個序列的值,而不是使用return
。當生成器被調用時,它返回一個迭代器對象,而不是直接執行函數體。
生成器實現了迭代器協議,這意味著它們必須定義__iter__()
和__next__()
方法。__iter__()
方法返回生成器對象本身,而__next__()
方法負責返回序列中的下一個值。當沒有更多值可返回時,__next__()
方法應引發StopIteration
異常。
以下是一個簡單的生成器示例:
def simple_generator():
yield 1
yield 2
yield 3
# 創建一個生成器對象
gen = simple_generator()
# 使用迭代器協議遍歷生成器
for value in gen:
print(value)
輸出:
1
2
3
在這個例子中,simple_generator
函數是一個生成器,它實現了迭代器協議。當我們使用for
循環遍歷生成器時,它會自動調用__iter__()
和__next__()
方法,直到遇到StopIteration
異常,表示迭代完成。