「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中文網其他相關文章!