在Python中,要定義一個生成器函數,您需要在函數內部使用yield
關鍵字而不是return
。當調用一個包含yield
關鍵字的函數時,它不會立即執行,而是返回一個生成器對象。每次從這個生成器對象請求一個值時,函數會從上次暫停的地方繼續執行,直到遇到下一個yield
關鍵字,然后返回yield
后面的值。
以下是一個簡單的生成器函數示例,用于生成前n個斐波那契數列:
def fibonacci(n):
a, b = 0, 1
count = 0
while count < n:
yield a
a, b = b, a + b
count += 1
# 使用生成器函數
fib_gen = fibonacci(5)
for num in fib_gen:
print(num)
在這個例子中,fibonacci
函數是一個生成器函數,因為它使用了yield
關鍵字。當我們調用fibonacci(5)
時,它返回一個生成器對象fib_gen
。然后我們使用for
循環遍歷這個生成器對象,每次迭代都會執行fibonacci
函數的一部分,直到遇到yield
關鍵字,然后返回yield
后面的值。