Python中,生成器是一種特殊的函數,它會一次性地生成序列中的多個值而不是一次返回單個值。要遍歷生成器中的所有元素,我們可以使用`for-in`循環或者手動從生成器中獲取每個值。
def nums():
yield 1
yield 2
yield 3
for num in nums():
print(num)
# 輸出:
# 1
# 2
# 3
g = nums()
print(next(g)) # 輸出: 1
print(next(g)) # 輸出: 2
print(next(g)) # 輸出: 3
以上代碼定義了一個生成器函數`nums()`,它會生成數字1、2、3。我們可以使用`for-in`循環遍歷該生成器中的所有元素。也可以使用`next()`方法手動從生成器中獲取每個值。
需要注意的是,當生成器已經生成了所有值時,再次調用`next()`方法會拋出`StopIteration`異常。
g = nums()
print(next(g)) # 輸出: 1
print(next(g)) # 輸出: 2
print(next(g)) # 輸出: 3
print(next(g)) # 拋出 StopIteration 異常
因此,在遍歷生成器時,我們通常使用`for-in`循環,這樣當生成器生成完所有值時,循環就會自動結束,而不用我們手動判斷是否已經到了最后一個值。