📅  最后修改于: 2023-12-03 14:46:45.474000             🧑  作者: Mango
在 Python 中,生成器是一种特殊的函数,它不是一次性产生所有结果,而是通过 yield 关键字逐个返回结果,这样可以节省大量内存空间。
生成器有两种创建方法:使用函数和生成器表达式。
使用函数创建生成器时,需要在函数内部使用关键字 yield
来每次返回一个结果。当函数被调用时,它会返回一个生成器对象。下面是一个简单的例子:
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
print(next(gen)) # 1
print(next(gen)) # 2
print(next(gen)) # 3
生成器表达式是一种快速创建生成器的方法。它的语法和列表推导式类似,只需将列表推导式中的方括号改为圆括号,即可得到一个生成器表达式。
gen = (x**2 for x in range(5))
print(next(gen)) # 0
print(next(gen)) # 1
print(next(gen)) # 4
生成器是一种迭代器,因此可以使用 for...in
循环来迭代遍历生成器中的所有值。
gen = (x**2 for x in range(5))
for x in gen:
print(x)
生成器可以作为一种协程来使用。协程是一种轻量级的线程,不需要操作系统切换上下文,因此非常高效。
def my_coroutine():
while True:
received = yield
print('Received:', received)
coro = my_coroutine()
next(coro)
coro.send('Hello, world!') # Received: Hello, world!
生成器是一种高效的逐个输出结果的方法,可以节省大量内存空间。在 Python 中,生成器是一种特殊的函数,可以通过函数或生成器表达式创建。生成器是一种迭代器,可以使用 for 循环来遍历所有结果。生成器也可以作为协程来使用,提高程序的效率。