ホームページ バックエンド開発 Python チュートリアル 双方向通信の力を解き放つ: 「yield from」は Python 3.3 に何をもたらしますか?

双方向通信の力を解き放つ: 「yield from」は Python 3.3 に何をもたらしますか?

Oct 24, 2024 am 04:00 AM

Unlocking the Power of Bi-Directional Communication: What does

Python 3.3 の "yield from" の威力

Python 3.3 では、"yield from" 構文が導入され、プログラミングに革新的なアプローチがもたらされました。ジェネレーターとコルーチンを使用します。通常のジェネレーターと似ていますが、yield from は呼び出し元とサブジェネレーターの間に直接接続を確立し、シームレスな双方向通信を可能にします。

1.ジェネレーターからのデータの読み取り

最も単純な使用例は、ジェネレーターからのデータの読み取りです。 yield from を使用すると、通常のループと同様に、簡略化された構文でジェネレーターから値を受け取ることができます。

たとえば、データの読み取りをシミュレートするジェネレーターを考えてみましょう。

<code class="python">def reader():
    for i in range(4):
        yield '<< %s' % i
ログイン後にコピー

Usingから得られる場合、次のようにデータを反復処理できます:

<code class="python">def reader_wrapper(g):
    yield from g

wrap = reader_wrapper(reader())
for i in wrap:
    print(i)
ログイン後にコピー

2.コルーチンへのデータの送信

は、データをコルーチンに送信するときに輝きます。 yield from を使用すると、ラッパーに送信されたデータは透過的にコルーチンに転送されます。

特定の宛先にデータを書き込むコルーチンを考えてみましょう:

<code class="python">def writer():
    while True:
        w = (yield)
        print('>> ', w)</code>
ログイン後にコピー

yield を使用してこのライターにデータを送信するにはから:

<code class="python">def writer_wrapper(coro):
    coro.send(None)
    while True:
        try:
            x = (yield)
            coro.send(x)
        except StopIteration:
            pass

w = writer()
wrap = writer_wrapper(w)
wrap.send(None)
for i in range(4):
    wrap.send(i)</code>
ログイン後にコピー

3.例外処理

は例外をシームレスに処理します。サブジェネレーターで発生した例外は呼び出し元に伝播されます。さらに、ラッパーに送信された例外をサブジェネレーターにスローできます。

たとえば、ライター コルーチンでは:

<code class="python">def writer():
    while True:
        try:
            w = (yield)
        except SpamException:
            print('***')
        else:
            print('>> ', w)</code>
ログイン後にコピー

yield from を使用すると、次のように例外を処理できます。 :

<code class="python">def writer_wrapper(coro):
    yield from coro</code>
ログイン後にコピー

4.双方向通信の力

yield from の重要な側面は、確立される双方向接続です。データをコルーチンに送信するだけでなく、例外を伝播し、サブジェネレーターの最終値を返すこともできます。

結論

yield from は強力なツールですそれは Python のジェネレーターとコルーチンに革命をもたらしました。双方向通信を簡素化し、例外をシームレスに処理し、洗練されたソリューションを可能にします。そのユースケースはここで説明した例をはるかに超えており、Python の多くの高度なプログラミング タスクに不可欠なコンポーネントとなっています。

以上が双方向通信の力を解き放つ: 「yield from」は Python 3.3 に何をもたらしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Pythonを使用してテキストファイルのZIPF配布を見つける方法 Pythonを使用してテキストファイルのZIPF配布を見つける方法 Mar 05, 2025 am 09:58 AM

Pythonを使用してテキストファイルのZIPF配布を見つける方法

Pythonでファイルをダウンロードする方法 Pythonでファイルをダウンロードする方法 Mar 01, 2025 am 10:03 AM

Pythonでファイルをダウンロードする方法

Pythonでの画像フィルタリング Pythonでの画像フィルタリング Mar 03, 2025 am 09:44 AM

Pythonでの画像フィルタリング

HTMLを解析するために美しいスープを使用するにはどうすればよいですか? HTMLを解析するために美しいスープを使用するにはどうすればよいですか? Mar 10, 2025 pm 06:54 PM

HTMLを解析するために美しいスープを使用するにはどうすればよいですか?

Pythonを使用してPDFドキュメントの操作方法 Pythonを使用してPDFドキュメントの操作方法 Mar 02, 2025 am 09:54 AM

Pythonを使用してPDFドキュメントの操作方法

DjangoアプリケーションでRedisを使用してキャッシュする方法 DjangoアプリケーションでRedisを使用してキャッシュする方法 Mar 02, 2025 am 10:10 AM

DjangoアプリケーションでRedisを使用してキャッシュする方法

Natural Language Toolkit(NLTK)の紹介 Natural Language Toolkit(NLTK)の紹介 Mar 01, 2025 am 10:05 AM

Natural Language Toolkit(NLTK)の紹介

TensorflowまたはPytorchで深い学習を実行する方法は? TensorflowまたはPytorchで深い学習を実行する方法は? Mar 10, 2025 pm 06:52 PM

TensorflowまたはPytorchで深い学習を実行する方法は?

See all articles