生成器函数是一个特殊的函数,它可以使用 yield 关键字来返回一个迭代器,以便使用者能够对产生的值进行逐个迭代。Python 中的很多内置函数,比如 range() 和 enumerate(),都是生成器函数。
下面是编写生成器函数及其使用方法的完整攻略:
编写生成器函数的语法
def generator_function():
# 产生序列中的值
yield value
其中,generator_function 是生成器函数的函数名,yield value 是要产生的值。注意,yield 关键字可以在函数体中出现多次,表示产生多个值。
使用生成器函数
方法一:直接使用 for
循环语句迭代生成器
# 定义生成器函数
def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1
# 调用生成器函数
for num in count_up_to(5):
print(num)
上面的代码定义了一个生成器函数 count_up_to()
,它从 1 开始,每次产生一个递增的值,直到达到 n,并提供了一个使用方法,利用 for 循环语句将生成器中的值遍历并输出。
输出结果:
1
2
3
4
5
方法二:使用 next()
函数获取生成器中的下一个值
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
f = fibonacci()
print(next(f))
print(next(f))
print(next(f))
上面的代码定义了一个生成器函数 fibonacci()
,每次产生斐波那契数列中的下一个值。然后创建了一个生成器对象 f
,使用 next()
函数来逐次获取生成器中的下一个值。
输出结果:
0
1
1
使用 next()
函数需要注意的是,当生成器函数中没有更多的值可供产生时,会抛出 StopIteration 异常。可以通过 try...except
语句捕获异常并进行处理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 编写生成器函数 - Python技术站