目次
1. yield関数をジェネレーターに変えます
2。怠zyな評価:値はオンデマンドで生成されます
3。 returnからのyield違い
4.実際のユースケース
5.ジェネレーターオブジェクトは反復因子です
ホームページ バックエンド開発 Python チュートリアル 収量キーワードはPythonでどのように機能しますか

収量キーワードはPythonでどのように機能しますか

Aug 15, 2025 am 08:23 AM
python yield

収量キーワードは、ジェネレーター関数を定義するために使用されるため、実行と値を1つずつ返すことができ、一時停止から回復できます。ジェネレーター関数はジェネレーターオブジェクトを返し、怠zyな評価特性を持ち、メモリを保存できます。大規模なファイル、ストリーミングデータ、無限のシーケンスなどのシナリオを処理するのに適しています。ジェネレーターは、次の()とループをサポートするが、巻き戻すことはできず、再び反復するために再現する必要があるイテレーターです。

収量キーワードはPythonでどのように機能しますか

Pythonのyieldキーワードは、ジェネレーターオブジェクトを返す特別な種類の関数であるジェネレーター関数を定義するために使用されます。値を返して終了する通常の関数とは異なり、ジェネレーター関数は実行を一時停止し、値を返すことができ、後で中断した場所から再開できます

これがどのように機能しますか:

1. yield関数をジェネレーターに変えます

関数内でyieldを使用すると、その関数はジェネレーター関数になります。それを呼び出すことはすぐに機能を実行しません - 代わりに、繰り返すことができるジェネレーターオブジェクトを返します。

 def count_up_to(max):
    count = 1
    while count <= max:
        降伏数
        count = 1

#これはまだ機能を実行していません
counter = count_up_to(3)

#ここで反復します
カウンターの番号の場合:
    print(number)#出力:1、2、3

yieldが発生するたびに、関数は一時停止し、その状態(ローカル変数のように)を節約し、生成価値を返します。次回はnext()が発電機で呼び出されると、 yield直後から再開されます


2。怠zyな評価:値はオンデマンドで生成されます

ジェネレーターは、必要な場合にのみ、一度に1つずつ価値を生成します。これは、特に大規模なデータセットまたは無限シーケンスでは、メモリ効率が高くなります。

 def infinite_counter():
    num = 1
    本当です:
        収量数
        num = 1

gen = infinite_counter()
印刷(次(gen))#1
印刷(次(gen))#2
印刷(次(gen))#3

これは、リストを返す通常の関数で動作することはありません。メモリに無限の値を作成しようとします。しかし、 yieldとともに、それは一度に1つを生成します。


3。 returnからのyield違い

  • return値を送信し、関数を永続的に終了します
  • yield値を送り返しますが、関数を一時停止し、次の呼び出しのために状態を保存します。
 def simple_generator():
    「最初」を獲得する
    「2番目」を獲得する
    「3番目」を獲得する

gen = simple_generator()
print(next(gen))#first
print(next(gen))#second
print(next(gen))#3番目
#print(next(gen))#停止を上げます

next()コールは、次のyieldまで関数を再開します。


4.実際のユースケース

  • 大きなファイルの処理:すべてをメモリにロードせずに行ごとに読み取ります。
  • ストリーミングデータ:APIまたはセンサーから一度に1つずつ値を生成します。
  • 無限シーケンス:フィボナッチ、カウンターなどのように。
  • パイプライン:効率的なデータ処理用のチェーンジェネレーター。

例:大きなファイルを効率的に読み取ります

def read_large_file(file_path):
    open(file_path)がfとして:
        Fのラインの場合:
            派生line.strip()

このようにして、一度に1つのラインのみがメモリになっています。


5.ジェネレーターオブジェクトは反復因子です

ジェネレーターはイテレーターなので、サポートしています。

  • next() - 次の値を取得します
  • ループfor - 反復を自動的に処理します
  • 疲れ果てたときにStopIteration引き起こします

発電機を「巻き戻す」ことはできません。一度それを経験したら、それは完了です。新しいものを作成する必要があります。


要するに、 yieldにより、関数が時間の経過とともに一連の値を生成することができ、実行を一時停止し、実行を回復することができます。これは、ストリームや大規模なデータを扱う際に、メモリ効率の高いクリーンコードを作成するための強力なツールです。

基本的に、 yieldにより機能が中断された場所を思い出します。通常の関数は機能しません。

以上が収量キーワードはPythonでどのように機能しますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の 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を使用してExcelからWebフォームにデータ入力を自動化する方法は? Pythonを使用してExcelからWebフォームにデータ入力を自動化する方法は? Aug 12, 2025 am 02:39 AM

Pythonを使用してExcelデータをWebフォームに入力する方法は次のとおりです。最初にPandasを使用してExcelデータを読み取り、次にSeleniumを使用してブラウザを制御してフォームを自動的に入力して送信します。特定の手順には、Pandas、OpenPyXL、Seleniumライブラリのインストール、対応するブラウザドライバーのダウンロード、Pandasを使用してdata.xlsxファイルの名前、電子メール、電話、その他のフィールドを読み取り、セレニウムを介してブラウザを起動してターゲットWebページを開き、フォーム要素を見つけ、レインごとにデータラインを提出します。ループ内のすべてのデータライン。

暗号通貨取引における感情分析とは何ですか? 暗号通貨取引における感情分析とは何ですか? Aug 14, 2025 am 11:15 AM

目次暗号通貨取引における感情分析とは何ですか?暗号通貨投資で感情分析が重要である理由は、感情データの重要なソースa。ソーシャルメディアプラットフォームb。ニュースメディアc。センチメント分析とテクノロジーのツールセンチメント分析で一般的に使用されるツール:採用された技術:センチメント分析を取引戦略に統合する方法:戦略の使用方法:戦略の例:BTC取引シナリオシナリオ設定の仮定:感情シグナル:決定:結果:結果とリスクハミドによる最近の2025年の研究

メモリに収まらないPythonで大きなデータセットを処理する方法は? メモリに収まらないPythonで大きなデータセットを処理する方法は? Aug 14, 2025 pm 01:00 PM

Pythonのメモリを超える大きなデータセットを処理する場合、一度にRAMにロードすることはできません。代わりに、チャンク処理、ディスクストレージ、ストリーミングなどの戦略を採用する必要があります。 CSVファイルは、PandasのChunksizeパラメーターを介してチャンクで読み取ることができ、ブロックごとにブロックを処理できます。 Daskを使用して、Pandas構文と同様の並列化とタスクスケジューリングを実現して、大規模なメモリデータ操作をサポートできます。メモリの使用量を減らすために、テキストファイルをラインごとに読み取るためのジェネレーター関数を書き込みます。 Parquet Colornarストレージ形式をPyarrowと組み合わせて使用して、特定の列または行グループを効率的に読み取ります。 NumpyのMemmapを使用して大きな数値配列をメモリして、需要のあるデータフラグメントにアクセスするか、SQLiteやDuckDBなどの軽量データにデータを保存します。

Pythonコードをデバッグする方法 Pythonコードをデバッグする方法 Aug 13, 2025 am 12:18 AM

useprint()statementstocheckvariablevaluesAndexecutionflow、addinglabelsandtypesforclarity、andremovethembeforecommitting;

崇高なテキストでPythonコードをデバッグする方法は? 崇高なテキストでPythonコードをデバッグする方法は? Aug 14, 2025 pm 04:51 PM

USESUBLIMETEXT’SBUILDSYSTEMTORUNPYTHONSCRIPTSSANDCATCHERRORSBYPRESSINGCTRL BAFTSTITINGTHECRECTSTYSTEMSESTINGACUSTOMONE.2.INSERTSTRATEGICPRINT()STATEMESTCHECKECKVARIABLEVALUES、タイプ、タイプ、セキュリティフロー、LABELSANDREPRを使用します

崇高なテキストでPythonコードを実行する方法は? 崇高なテキストでPythonコードを実行する方法は? Aug 16, 2025 am 04:58 AM

Pythonがインストールされ、システムパスに追加されていることを確認し、Python(versionまたはpython3-version Verification from terminal)を実行してください。 2。hello.pyなどの.py拡張子としてpythonファイルを保存します。 3. sublimetextでカスタムビルドシステムを作成する、Windowsユーザーは{"cmd":["python"、 "-u"、 "$ file"]}を使用します。

ネストされたリストまたはPythonのリストのリストをフラット化する方法 ネストされたリストまたはPythonのリストのリストをフラット化する方法 Aug 12, 2025 am 09:49 AM

flatteninganestedlistinpythonconvertsalist withssublistslistslistslistslistslistlistlist、およびthebestmethoddependsonthentingdepthanddatasize.forone-levelnesting、uselistcomlethinglike [itemforsublistinnested_listforitemunvitunivispublist(

VSCODEでPythonスクリプトをデバッグする方法 VSCODEでPythonスクリプトをデバッグする方法 Aug 16, 2025 am 02:53 AM

Pythonスクリプトをデバッグするには、最初にPython拡張子をインストールしてインタープリターを設定し、Launch.jsonファイルを作成してデバッグ構成を設定する必要があります。次に、コードにブレークポイントを設定し、F5を押してデバッグを開始する必要があります。スクリプトはブレークポイントで一時停止され、チェック変数と段階的な実行が可能になります。最後に、コンソールの出力を表示したり、ログを追加したり、パラメーターを調整したりするなどして問題を確認して、環境が正しい後にデバッグプロセスがシンプルで効率的であることを確認します。

See all articles