“yield from”尤其被证明在以下场景中很有价值:
从生成器读取数据:
<code class="python">def reader(): for i in range(4): yield '< ' + str(i) for i in reader(): print(i) # Prints '< 0', '< 1', '< 2', '< 3'
“yield from”提供了一种迭代生成数据的便捷方法
将数据发送到协程:
<code class="python">def writer(): while True: w = (yield) print('> ', w) w = writer() for i in range(4): w.send(i) # Prints '> 0', '> 1', '> 2', '> 3'</code>
“yield from”允许“writer”协程无缝接收数据从外部源发送。
“yield from”在某种意义上反映了微线程的行为即:
“yield from”的一个实际应用是将数据读取和写入合并到一个函数中。考虑以下示例:
<code class="python">def data_handler(): for i in reader(): yield from writer(i) for i in data_handler(): print(i) # Prints the data written by 'writer'</code>
“data_handler”函数使用“yield from”将数据按顺序从“reader”生成器传递到“writer”协程,创建简化的数据处理管道。
以上是Python 3.3 中'yield from”的不同用例及其优点是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!