まず、需要
形式から「印刷%sの倍の」%dを印刷する、この時点での印刷が2,000,000となっています。(ダイレクトレンジ(2000000)動けなく、カードを望んでいません)
発電機の第二に、定義
1.発電機はまた、実際に得られたイテレータ、あなたが大幅にメモリを節約することができ、発電機を書きました。
2.機能は、歩留まりを使用しています。
3.yield:有効性とほぼ同じ返しますが、一緒に表示されて動かない場所に滞在するための機能の実行、歩留まりの戻り値の後に、返すことはできません。戻り値は、次の呼び出しは再び来る、停止します。
第三に、例
DEF PrintX(): 用 I におけるレンジ(2,000,000 ): 収量 ' X = S%'%I G = PrintX() G1 = PrintX() #これは、2つの発電機である
#G .__次__():取得 =カウント0 用のI におけるG: 印刷(I) #印刷面を調整しながら。データ処理面を生成します。 + = 1つのカウント。IF回数> 50: #いつでもプラスカウント値、次が取り得るBREAKの印刷(「*** 」、G. __next__()) #*** X = 51
場合ここで、G = printx()、実際のリターンデータ生成、下位印刷における一方のみメモリから、範囲(2000000)を作成しません。
第四に、いくつかの機能の紹介:
__iter __():このメソッドはありイテレーションも示しています。
__next __():このメソッドは、一つ一つが取り出すことができる説明します。
__setstate __():あなたが撮影を開始する場所を指定することができます。
__add __():__add__機械翻訳のメソッドを呼び出すために、実際には、追加を使用。
(直接法の下でダブルはほとんど通常、他の文法のトリガーと、呼び出されません)
V.の概要
1.発生器は、本質的に反復子であります
2.フォームジェネレータ
1)生成関数
2)ジェネレータ式
3.ジェネレータ関数:ジェネレータ関数は、yieldキーワードを含む関数です。
4.ジェネレータ関数の機能は:
1)機能を実行しないと呼ばれる関数は、発電機を返した後。
2)メソッドを呼び出した後に値を取ること__next__ます。最後のエラーの後まで完了してください。
いくつかの方法ビルダからの値:
1)次
DEF ジェネレータ() のための I における範囲(20000000 ): 収率 " 回の印刷の%s "%(I + 1 ) G = ジェネレータ() プリント(G. __next__()) #の印刷1
2)について
DEF ジェネレータ() のための I における範囲(20000000 ): 収率 " 打印第%sの次"%I G = ジェネレータ() NUM = 0 のための I におけるG: NUM + = 1 であれば NUM> 50 : ブレーク・ プリント(I)
3)データ型のキャスト
DEF ジェネレータ() のための I における:範囲(20)と #1 のデータが小さい、 収率 " 印刷%回のS "%(I + 1 ) G = ジェネレータ() プリント(リスト(G)) #発電機をに変換されリスト、メモリ内のデータ間。(合計メモリ)