Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Yieldキーワード:ガイド

PythonYieldキーワードの使用方法

ジェネレーターは、Pythonで最も直感的な概念ではありません。さらに悪いことに、ジェネレーター自体は関数ですが、「yield」と呼ばれる特別なキーワードを使用します。イールドキーワードとは何ですか? returnステートメントと比較してどうですか?

それらは良い質問です。このガイドでは、yieldステートメントとは何か、およびコードでそれをどのように使用できるかについて説明します。実際のyieldキーワードの例を見ていきます。始めましょう!

続行する前に、Pythonイテレータとジェネレータに関する記事を読むことをお勧めします。これにより、yieldキーワードの理解を深めるために使用できる便利なコンテキストが得られます。

基本に戻る:イテレータとジェネレータ

リストは反復可能なオブジェクトとして記述されます。これは、「for」ループを使用してコンテンツを表示できるためです。ループが実行されるたびに、リスト内のアイテムがPythonによってアクセスされます。辞書、タプル、および文字列も反復可能なオブジェクトです。

反復可能なオブジェクトからアイテムにアクセスする関数は、イテレータと呼ばれます。 。リストを作成し、forループを使用してリストを繰り返します:

peppers = ["Scotch Bonnet", "Piri Piri", "Cayenne"]

for p in peppers:
	print(p)
for p in peppers:
	print(p)

このコードは、「ペッパー」リスト内のすべてのペッパーをコンソールに出力します。

Scotch Bonnet
Piri Piri
Cayenne
Scotch Bonnet
Piri Piri
Cayenne

イテレータは何度でも使用します。最後の例では、「peppers」オブジェクトを2回繰り返しました。

Pythonジェネレーターは、オブジェクトを繰り返すために使用されるイテレーターのようなものです。大きな違いが1つあります。ジェネレーターを反復処理できるのは1回だけです。 「peppers」を何度でも繰り返すことができますが、ジェネレーターにアクセスできるのは1回だけです。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

コショウのリストのジェネレータを定義しましょう:

def print_peppers(peppers):
	for p in peppers:
		yield p

peppers = ["Scotch Bonnet", "Piri Piri", "Cayenne"]
pepper_generator = print_peppers(peppers)

for p in pepper_generator:
	print(p)
>

print_peppers()という関数を定義します 。これがジェネレーター関数です。これは、コンソールに出力するペッパーのリストという1つの引数を受け入れます。

メインプログラムでは、print_peppers()を呼び出します。 関数を作成し、それを変数pepper_generatorに割り当てます。次に、「for」ループを使用してジェネレーターを反復処理します。 forループはジェネレータオブジェクトを呼び出し、それを繰り返し処理します。

コードを実行してみましょう:

Scotch Bonnet
Piri Piri
Cayenne

出力は最初の例と同じです。違いは、リストを繰り返すことができるのは1回だけであるということです。ジェネレーターをもう一度繰り返してみましょう:

...
for p in pepper_generator:
	print(p)
for p in pepper_generator:
	print(p)

コードは次のようになります:

Scotch Bonnet
Piri Piri
Cayenne

ジェネレーターを1回繰り返しました。二度とできません。そのため、2番目のforループは値を返しません。

PythonYieldキーワード

最後の例の「yield」という単語に注意してください。ここにリマインダーがあります:

def print_peppers(peppers):
	for p in peppers:
		yield p

「yield」キーワードは関数内に表示されます。ジェネレーター関数で値を返します。 「return」キーワードに似ています。

反復できるジェネレーターを作成する場合は、yieldを使用します。最後の例では、yieldを使用して、ペッパーのリストのジェネレーターを作成します。

イールドを含む関数はすべてジェネレーターを返します。これは、type()を使用してpepper_generator変数のタイプを確認することで確認できます。 方法:

<class 'generator'>

これは、print_peppers関数が割り当てられているpepper_generatorがジェネレーターであることを示しています。

結論

yieldキーワードは、ジェネレーター内の値を返します。ジェネレーターは特殊なタイプのイテレーターであり、その値は1回だけ繰り返すことができます。 yieldキーワードは、returnステートメントをジェネレーターで使用できないことを除いて、returnステートメントに似ています。

これで、Pythonistaのようにyieldキーワードを使用する準備が整いました!


  1. Pythonのキーワード

    他の言語と同様に、Pythonにもいくつかの予約語があります。これらの言葉には特別な意味があります。コマンドやパラメータなどの場合もあります。キーワードを変数名として使用することはできません。 Pythonキーワードは True 誤り クラス def リターン if elif その他 試してください 例外 レイズ 最後に for in は ない から インポート グローバル ラムダ 非ローカル パス while 休憩 続行 および with as 利回り del または アサート なし 真と偽のキーワード TrueとF

  2. Pythonで「yield」キーワードは何をしますか?

    ジェネレーターではyieldキーワードが使用されます。その動作を理解するために、最初に反復可能とは何かを見てみましょう。 Pythonオブジェクトのリスト、ファイル、文字列などは反復可能と呼ばれます。 for..を構文で使用してトラバースできるオブジェクトはすべて反復可能です。 Iteratorオブジェクトも反復可能ですが、反復できるのは1回だけです。イテレータオブジェクトは、iter()関数を使用して任意のイテレータから取得でき、反復が行われるnext()メソッドがあります。 >>> L1 = [1,2,3,4] >>> I1 = iter(L1) &g