1、イテレータ
限り、それはデータ型の循環を可能として、確か__iter__メソッドを持っています
印刷(' __iter__ ' で DIR(BOOL)) #は__iter__を含むか否かを判断します
戻り値は()を実行__iter __用のリストの後イテレータです
= L [1,2,3 ] イテレータ = L. __iter__() #イテレータ返す プリント(イテレータ。__next__()) #のイテレータによって要素の呼び出しリストを 印刷(イテレータ。__next__ ()) #反復処理可能で反復すること- > __iter__#__iter__それは反復法が利用可能である含んでいる限り #[] .__ ITER __()反復子- > __next__#横にイテレータから1の値で
イテレータのコンセプト
イテレータプロトコル- __next__イテレータを備え、内部および__iter__方法
イテレータプロトコルおよびプロトコルの反復は
、すべてのための反復ループであってもよい
内部反復__iter__方法を有することができる
限り、イテレータ繰り返し処理しなければならないようにすることができ
、反復すること.__ ITERの__()メソッドは、イテレータ得るために使用することができる
イテレータを__nextの__()メソッドでの値を得ることができます
2、発電機
キーワードあれば、ジェネレータ関数が含まれているとして、降伏の関数であり
、収率は、共有とリターン機能で書かれてする必要はありません
DEF ジェネレータ(): 印刷(1 ) 収率 「」#のジェネレータ機能:ジェネレータは戻り値として実行される後 RET = ジェネレータ() プリント(RET) プリント(RET __next__())
図3に示すように、モニタファイル入力・リエ(ただし、ビデオが、ノーコードのように、実装されていません)
DEF テイル(ファイル名): F =オープン(ファイル名、エンコーディング= ' UTF-8 ' ) 、一方:真 ライン = f.readline() もしline.strip(): 収量line.strip() G =尾(' 001 ' ) のための I におけるG: プリント(I)