Python のジェネレーターの "send" 関数の目的を詳しく調べる
カスタム イテレーターを作成するための Python の強力なツールであるジェネレーターは、次の機能を提供するだけではありません。 yield キーワードだけでなく、あまり知られていませんが同様に重要な関数である send も使用します。ジェネレーターからの出力を提供する yield とは異なり、send を使用すると、ジェネレーターの動作をガイドする入力を導入して、実行中にジェネレーターと対話できます。
ドキュメントでは、send をジェネレーター関数に値を送信することと説明しています。 yield 式の現在の結果。これは、次に生成される値を返す yield の主な目的とは微妙に異なります。では、この矛盾は正確には何を意味するのでしょうか?
例: 送信の力を明らかにする
次のジェネレーターを考えてみましょう:
<code class="python">def double_inputs(): while True: x = yield yield x * 2</code>
このジェネレーターsend 経由で送信された値の 2 倍を生成します。ジェネレーターの実行内で send を使用すると、その動作を観察できます。
<code class="python">>>> gen = double_inputs() >>> next(gen) # Execute until the first yield >>> gen.send(10) # Send value into the generator 20 >>> next(gen) # Execute until the next yield >>> gen.send(6) 12 >>> next(gen) # Execute until the next yield >>> gen.send(94.3) 188.5999999999999</code>
send 関数がなければ、この機能は yield だけを使用して実現することは不可能です。
実際の応用: Twisted の @defer.inlineCallbacks
送信の最も魅力的な使用例の 1 つは、Twisted の @defer.inlineCallbacks と組み合わせて使用されます。このデコレータを使用すると、yield ステートメントが Deferred オブジェクトを返す非同期コードをより簡単な方法で作成できます。これらのオブジェクトは、後で計算される値を表します。
Twisted は、これらの計算を別のスレッドで実行し、結果を send 経由で関数に非同期的に渡すことができます。これにより、コールバックと Deferred オブジェクトの力を同時に活用しながら、構造的に手続き型関数に似たコードを作成できます。
要約すると、send は実行中に入力値を導入できるようにすることで、Python ジェネレーターの機能を拡張します。これにより、double_inputs と @defer.inlineCallbacks を含む例で示されているように、より動的でインタラクティブなジェネレーターベースのコードの作成が可能になります。
以上がPython ジェネレーターの「send」関数の目的は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!
