パイソン---高度な機能(発電機、イテレータ、閉鎖)

ジェネレータ

何ジェネレータ?
Pythonで、しばらく発電機と呼ばれる側のコンピューティング・サイクル機構:ジェネレータ。
とき私は、発電機を使用する必要がありますか?
一般的に、我々は我々が読むためのpythonを使うなど、我々は、理由は性能限界を使用する必要がある場合にのみ発生装置を使用する必要はありません
あなたは、その後(メソッドを読んで)処理し、メモリにファイルをロードする場合は、番目のファイルの10グラムを10グラムを、あなたができる場合は、ここで、メモリがオーバーフロー確かだろう
な(readlineのとreadlines)を使用して、クロス処理を記述するために発電機を使用しますが、メモリ空間を大幅に節約することができるように?。、読みしていきますし、プロセスをリサイクルすることができ
ジェネレータを作成する方法
最初の方法:式の書き換えのリスト。[]()に変換する
第一の方法:収率キーワード。
各要素生成部を印刷する方法ありますか?
を通じてループのために、各要素を計算して生成するために。
あなたは1枚ずつ印刷したい場合は、次の()の戻り値によって、関数発生器を得ることが可能です。
ある発電機の特徴は何ですか?

  1. 保存メモリ
  2. 次の反復への呼び出しは、使用されるパラメータは保持の下で最初にある場合、つまり
    、関数呼び出しのすべてのパラメータで予約全体ではなく、新たなよりも最初の呼び出し、である、と言って
    作成しました。

プロデューサーのレッスンで実践:アプリケーション・ビルダー:チャットボット
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ジェネレータクラスの行使に:アプリケーション・ビルダー:プロデューサー-消費者モデル
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
の在庫の生産者と消費者に基づいて
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
発電機クラスの運動: Builderアプリケーションケース:平均
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明

イテレータ

定义
迭代是访问容器元素的一种方式。迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
可迭代对象:可以直接作用于for循环的对象(如何判断是否可以迭代?)
一类是集合数据类型,如list, tuple,dict, set,str等;
一类是generator,包括生成器和带yield的generator function。
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
把list、dict、str等Iterable变成Iterator可以使用iter()函数

ここに画像を挿入説明

可迭代对象
ここに画像を挿入説明
ここに画像を挿入説明
调用next方法
ここに画像を挿入説明
ここに画像を挿入説明

文字列のループがために達成するために
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
、裁判官がイテレート可能オブジェクトではありませんどのように
ここに画像を挿入説明
ここに画像を挿入説明
ファイルオブジェクト反復可能かどうかを判断
ここに画像を挿入説明
ここに画像を挿入説明
閉鎖
関数参照?
クロージャとは何ですか?
クロージャの概念は、我々は関数内で関数を定義する場合、この関数は内部を使用していることです外部関数のための一時的な変数、および外部関数は、基準値が内部関数である、我々はクロージャを呼び出して返します。
クロージャは、理解できますか?クロージャ内部機能のために呼ばれる変数(非グローバル変数)を基準とした外部関数のスコープの内部機能を、。
ローカル以外のキーワード?明示的に変数指定されたローカル変数がないの閉鎖で
人気のあるシーンの閉鎖がデコレータです。
小の例
ここに画像を挿入説明
注:機能線と変数bがクロージャを構成しています。クロージャを作成、我々はパラメータでline_conf、Bこれらの二つの変数の値を示しており、
私たちは関数(Y = X + 1、Y = 4X + 5)の最終形態を決定しました。
長所:閉鎖はまた、コードの再利用性を改善する役割を持っています。

おすすめ

転載: blog.csdn.net/weixin_43592835/article/details/90908077