{site_name}

{site_name}

🌜 搜索

Python中的生成器(generator)是一种特殊类型的函数,可以通过yie

Python 𝄐 0
python生成器yield,python3 生成器,python生成器怎么用,python中生成器,python 生成器原理,python生成器作用
Python中的生成器(generator)是一种特殊类型的函数,可以通过yield语句来实现惰性求值(lazy evaluation),即只有在需要时才会生成下一个元素,而不是一次性生成所有元素。这使得生成器非常适合处理大量数据或无限序列。

生成器函数的定义方式与普通函数相同,但它们使用yield语句返回输出序列中的每个元素。当调用生成器函数时,它将返回一个生成器对象。每次调用生成器对象的__next__()方法时,都会执行生成器函数直到遇到一个yield语句,并将其返回的值作为__next__()方法的返回值。当生成器函数运行完毕时(即没有更多的yield语句),会抛出StopIteration异常以表示迭代结束。

以下是一个简单的生成器函数,用于生成斐波那契数列:

python
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b


这个生成器函数可以无限地生成斐波那契数列中的每个数。例如,可以按以下方式使用它:

python
>>> f = fibonacci()
>>> next(f)
0
>>> next(f)
1
>>> next(f)
1
>>> next(f)
2
>>> next(f)
3
>>> next(f)
5


注意,每次调用next()方法时,生成器函数都会从上次停止的位置继续执行,直到遇到一个yield语句返回值。因此,每个next()方法的调用都会生成序列中的下一个元素。

除了使用yield语句定义生成器函数外,还可以使用生成器表达式来创建生成器对象。例如,以下生成器表达式将返回1到10之间所有奇数的平方:

python
(x**2 for x in range(1, 11) if x % 2 == 1)


这个生成器对象可以像任何其他生成器一样迭代,例如:

python
>>> g = (x**2 for x in range(1, 11) if x % 2 == 1)
>>> for i in g:
... print(i)
...
1
9
25
49
81