ホームページ バックエンド開発 Python チュートリアル Python での yield の使い方の紹介 (コード付き)

Python での yield の使い方の紹介 (コード付き)

Feb 22, 2019 pm 02:49 PM
python

この記事では、WeChat アプレット Python での yield の使用法 (コード付き) を紹介します。これには一定の参考価値があります。必要な友人は参照できます。お役に立てれば幸いです。

まず、利回りについて予備知識がないと、まず利回りを「リターン」と考えてしまうでしょう。これは直感的です。まずはリターンです。通常のリターンとは何を意味しますか? ? プログラム内で特定の値が返され、復帰後はプログラムが実行されなくなります。それを return として見た後、それをジェネレーターの一部として考えてください (yield を含む関数が実際のイテレータです)。これらを理解していない場合は、最初に yield を return として扱ってください。次に、次のプログラムを直接見てください。そうすれば、yield の完全な意味が理解できます:

def foo():
    print("starting...")
    while True:
        res = yield 4
        print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(next(g))
ログイン後にコピー

ほんの数行のコードで、yield が何であるかを理解できます。コードの出力は次のとおりです:

starting...
4
********************
res: None
4
ログイン後にコピー

Iコードの実行シーケンスを直接説明します。これは、コードのシングルステップ デバッグと同等です:

1. プログラムの実行が開始された後、foo 関数に yield キーワードがあるため、foo 関数は実際には実行しません。代わりに、最初にジェネレーター g (オブジェクトに相当) を取得します。

2. 次のメソッドが呼び出されるまで、foo 関数が正式に実行を開始します。最初に foo 関数内の print メソッドを実行し、次に while ループに入ります

3. プログラムは yield キーワードに遭遇し、yield を return とみなします。4 を返した後、プログラムは停止し、res 操作への代入は実行されません。このとき、 next(g) ステートメントの実行が完了したので、出力の最初の部分です。 2 行 (1 行目は 上記の print の結果、2 行目は return の結果) は、print(next() の実行結果です。 g)),

4. プログラムは print(""20) を実行し、出力 20 *

5. 次の print(next(g)) の実行を開始します今回は上記と似ていますが、違うのは今回は先ほどから開始することです 停止したところから次のプログラムの実行が開始されます、つまり res の代入操作が行われることになります。今回は、この時点では代入演算の右側に値がないことに注意してください(戻り値が出たばかりで、代入演算の左側には値がありません。パラメータを渡します)。この時点では、 res 割り当ては None なので、次の出力は res:None,

6 です。プログラムはしばらく実行を続け、再び yield に遭遇します。このとき、 4 も返します。その後、プログラムが停止し、print 関数による 4 出力が、この return による 4 出力になります。

この時点で、yield と return の関係と違いが理解できると思います。yield を持つ関数はジェネレーターです。関数ではありません。このジェネレータには next 関数という関数があります。next は「次のステップ」で生成される番号に相当します。今回の next の開始点は、前回の next が停止した場所から実行されるため、呼び出し時にnext の場合、ジェネレーターは foo 関数の先頭から実行されず、前のステップが停止したところから開始され、yield に遭遇した後、生成される数値を返し、このステップは終了します。

def foo():
    print("starting...")
    while True:
        res = yield 4
        print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(g.send(7))
ログイン後にコピー

このジェネレーターの送信関数の別の例を見てみましょう。この例は、上の例の最後の行を置き換えるもので、出力結果は次のようになります:

starting...
4
********************
res: 7
4
ログイン後にコピー

送信について簡単に説明します。概念: このとき、上の紫色の文字と、なぜ上の res の値が None で、これが 7 になるのかに注目してください。これは、send が res にパラメータを送信するためです。戻ったとき、res には 4 は代入されません。次に実行されるときは、引き続き代入操作を実行する必要があり、値を None に代入する必要があります。send が使用されている場合、実行が開始されると、最初の状態から継続されます。前回(return 4 After)の実行は、まずresに7を代入し、次にnextの関数を実行し、次のyieldを満たし、結果を返して終了します。

5. プログラムは g.send(7) を実行し、プログラムは yield キーワード行から下方向に実行を続け、send は値 7 を res 変数

6 に割り当てます。 send メソッドには next() メソッドが含まれているため、プログラムは下方向に実行を続けて print メソッドを実行し、再び while ループに入ります (

7)。プログラムの実行で yield キーワードが再び検出された後、 、yield は後続の値を返し、次のメソッドまたは send メソッドが再度呼び出されるまでプログラムは再び一時停止します。

以上です。このジェネレーターを使用する理由について話しましょう。List を使用すると、より多くのスペースが必要になるためです。たとえば、0,1,2,3,4,5,6 を例に挙げます。 ......1000

次のようになります:

for n in range(1000):
    a=n
ログイン後にコピー

現時点では、range(1000) はデフォルトで 1000 個の数値を含むリストを生成します。そのため、多くのメモリを消費します。

現時点では、先ほどの収量の組み合わせを使用して実装用のジェネレーターを形成することも、xrange(1000) ジェネレーターを使用して

収量の組み合わせ:

def foo(num):
    print("starting...")
    while num<10:
        num=num+1
        yield num
for n in foo(0):
    print(n)
ログイン後にコピー
を実装することもできます。

出力:

starting...
1
2
3
4
5
6
7
8
9
10
ログイン後にコピー

xrange(1000):

for n in xrange(1000):
    a=n
ログイン後にコピー

python3 には xrange() がないことに注意してください。python3 では、range() は xrange() です。 python3 を使用できます。 の range() の型を確認してください。これはすでにリストではなく になっています。結局のところ、これは最適化する必要があります。

以上がPython での yield の使い方の紹介 (コード付き)の詳細内容です。詳細については、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衣類リムーバー

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)

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Sublime Code Pythonを実行する方法 Sublime Code Pythonを実行する方法 Apr 16, 2025 am 08:48 AM

PythonコードをSublimeテキストで実行するには、最初にPythonプラグインをインストールし、次に.pyファイルを作成してコードを書き込み、Ctrl Bを押してコードを実行する必要があります。コードを実行すると、出力がコンソールに表示されます。

Windows 8でコードを実行できます Windows 8でコードを実行できます Apr 15, 2025 pm 07:24 PM

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

vscodeでコードを書く場所 vscodeでコードを書く場所 Apr 15, 2025 pm 09:54 PM

Visual Studioコード(VSCODE)でコードを作成するのはシンプルで使いやすいです。 VSCODEをインストールし、プロジェクトの作成、言語の選択、ファイルの作成、コードの書き込み、保存して実行します。 VSCODEの利点には、クロスプラットフォーム、フリーおよびオープンソース、強力な機能、リッチエクステンション、軽量で高速が含まれます。

Visual StudioコードはPythonで使用できますか Visual StudioコードはPythonで使用できますか Apr 15, 2025 pm 08:18 PM

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

See all articles