yield はイテレータを実装します
導入部で説明したように、反復可能な関数を実装するために毎回手動で iter, next を実装するのは少し面倒で、必要なコードも比較的客観的です。 Python では、yield を使用してイテレータを実装することもできます。 Yield には、現在の実行ロジックを中断し、シーン (さまざまな値のステータス、実行位置など) を維持し、対応する値を返し、次回の実行で前回の実行をシームレスに継続することができます。ループは、あらかじめ設定された終了条件が満たされるか、エラーが発生して強制的に中断されるまで継続します。
その具体的な機能は、関数から値を返すために return として使用できることです。違いは、関数は、yield で返された後、yield で返された時点から実行を続行できることです。つまり、yield は関数を返し、呼び出し元に戻り値を与えてから「テレポート」して戻り、yield ステートメントが新しい値を返すまで関数の実行を継続できます。 yield を使用して戻った後、呼び出し元が実際に取得するのはイテレータ オブジェクトであり、イテレータの値が戻り値になります。イテレータの next() メソッドを呼び出すと、関数は yield ステートメントの実行環境を復元し、次のyieldが発生するまで実行を継続します。yieldが見つからない場合は、反復の終了を示す例外がスローされます。
例を見てみましょう:
説明を聞いただけで、イテレータの動作方法と非常に一致していると思いますよね? 確かに、yield は、配置された関数をイテレータに変えることができます。最も古典的なフィボナッチの例を使用して、動作方法を簡単に説明しましょう。シーケンス:
for キーワードの構文を思い出してください。5 以内のフィボナッチ数列値を走査するとき、fab(5) が反復可能オブジェクトを生成することは明らかです。その呼び出しは反復子オブジェクトを返します。これは実際に機能し、次のメソッドを呼び出すたびにフィボナッチ数列値が返されて出力されます。
ジェネレーター関数を呼び出して返されたオブジェクトのプロパティを出力して、何が起こっているかを確認できます:
上で説明したように、fab を呼び出すだけでは関数はすぐに値を返し始めません。fab(5) の出力された属性リストから、ジェネレーター関数によって返されるオブジェクトには __iter__ と next の実装が含まれていることがわかります。 。手動で実装する場合と比較して、yield を使用すると、必要な機能を実現するのに非常に便利で、コードの量も大幅に削減されます。
ジェネレーター式
Python でイテレータ オブジェクトをよりエレガントに生成するもう 1 つの方法は、ジェネレータ式を使用することです。これは、角括弧 [] を () に変更するだけの書き方です。確かに全く違います:
組み込みライブラリ itertools および iter
Python の組み込みライブラリ itertools は、効率的なトラバーサルと反復を実行できるオブジェクトの作成に役立つツール メソッドを多数提供します。これには、chain、izip/izip_longest、組み合わせ、ifilter など、多くの興味深い便利なメソッドが含まれています。待って。 Python には非常に便利な組み込みの iter 関数もあります。この関数はイテレータ オブジェクトを返すことができ、対応するヘルプ ドキュメントを簡単に参照できます。
リーリー

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Dreamweaver Mac版
ビジュアル Web 開発ツール

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

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

ホットトピック



