Python yield使用方法示例
yield 是 Python 用于定义生成器的关键字,它可以暂停函数并保存函数的状态,当下一次调用的时候,从上一次挂起的位置继续执行。关于 yield 的更多介绍可以查看我的这篇文章 Python生成器。
下面我们来看两个具体的示例。
示例一
def my_generator(num):
for i in range(num):
yield i
# 使用生成器
for num in my_generator(5):
print(num)
这里我们定义了一个生成器 my_generator,它的参数是 num。for 循环调用 my_generator(num),它会返回一个生成器对象,实现了按需逐个返回 num 以内的数字。因为生成器是迭代器,所以可以使用 for 循环直接迭代。
当调用 my_generator(num) 的时候,my_generator 函数会暂停,然后返回一个数字。下一次重新调用 my_generator 函数时,它会从上一次暂停的位置继续执行,直到执行完毕。
示例二
def my_coroutine():
while True:
x = yield
print('Received:', x)
# 使用协程
coroutine = my_coroutine()
next(coroutine) # 激活协程
coroutine.send('Hello')
coroutine.send('World')
这里我们定义了一个协程 my_coroutine,它的主体是一个无限循环,每次循环结束的时候,协程会暂停并等待数据的输入。使用 yield 来实现暂停。
当协程第一次被激活的时候需要调用 next(coroutine)。之后我们可以使用 coroutine.send() 来传递数据。传递的值可以在协程内部进行处理,上面的示例中我们只是简单地打印出了传递的值。
结论
yield 是一个非常方便的工具,Python 中有许多库和框架都使用了它,例如 Tornado、gevent、asyncio 等。使用 yield 可以使代码更加简洁、直观,提高代码的可读性和可维护性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python yield使用方法示例 - Python技术站