ホームページ  >  記事  >  バックエンド開発  >  Python における yield キーワードの役割と使用法の簡単な分析

Python における yield キーワードの役割と使用法の簡単な分析

WBOY
WBOYオリジナル
2016-12-05 13:27:181373ブラウズ

はじめに

収量とは何かを理解するには、まずジェネレーター (generator)是什么,在讲生成器之前先说说迭代器(iterator),当创建一个列表(list)时,你可以逐个的读取每一项,这就叫做迭代(iteration) を理解する必要があります。

リーリー

mylist は反復可能なオブジェクトです。リスト内包表記を使用してリストを作成すると、反復可能なオブジェクトが作成されます:

リーリー

for··· in ··· ”来操作可迭代对象,如:list,string,files」を使用できます。これらの反復オブジェクトは、必要に応じて繰り返し読み取ることができるため、非常に便利です。ただし、すべての要素を事前にメモリに保存する必要があります。これらのオブジェクトに多くの要素がある場合、すべてのアイテムがあなたに役立つわけではありません

ジェネレーターも反復可能なオブジェクトですが、すべての値をメモリに保存するのではなく、値を動的に生成するため、一度しか読み取ることができません:

リーリー

[]を()に置き換えるだけで違いはないようです。ただし、ジェネレーターは 1 回しか反復できないため、for i in mygenerator を再度使用することはできません。最初に 0 を計算し、次に 1 を計算し続け、次に 4 を次々に計算します...

yield 是一个类似 return キーワードですが、この関数はジェネレーターを返します。

リーリー

この例自体は意味がありませんが、この関数が一度だけ読み取ることができる値のセットを返すことを明確に示しています。yield をマスターするには、まず次のことを理解する必要があります。上記の例 createGenerator() では、プログラムは関数本体のコードを実行せず、ジェネレーター オブジェクトを返すだけですが、これは非常に微妙です。関数本体内のコードは、ジェネレーターの各ループ反復 (for) まで実行されません。

関数は最初の反復で実行され、最初から yield 关键字,然后返回 yield までの値が最初の反復の戻り値として使用されます。その後、この関数が実行されるたびに、次回も引き続き実行されます。関数内で定義したループで、返すものがなくなるまでその値を繰り返し返します。

yield キーワードがジェネレーター内で定義されていない場合、ジェネレーターは空とみなされます。これは、ループが不足しているか、if/else 条件が満たされていないために発生する可能性があります。

概要

上記はこの記事の全内容です。この記事の内容が Python の学習または使用に役立つことを願っています。ご質問がある場合は、メッセージを残してください。

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