それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Generator 関数

なんか、ごっついなまえがついてるけど、 for x in A や while( some.hasNext() ) の形式だけでは足りないので、CやJavaで出来る、while( (x = r.readLine() ) ) が使えるようにするってことのようだ。

def gen( obj ):
    x = " "
    while( x != None ):
        x = obj.readline()
        yield x #return の代わりに yieldをつかう

Java や C でwhile の中に埋め込む処理をPythonでは関数で定義しておけば使い回しできるし、ちょっと複雑なことが出来るから便利よねってことだろうねぇ。こう考えれば、Iteratorより高速だよといわれて納得できる。

return のかわりにyield*1を使うとGeneratorになる


この解釈は正しいのかな。細かく使ってみてから、また書き直そう。。。

*1: 作り出すって意味のある英単語。作って取り出すイメージの単語かな。化学論文を毎日読んでる頃は毎日目にした単語。