19

関数yield内でgenerator( ) を使用する利点は何ですか? Pythonクックブック__iter__()を読んだ後、「ジェネレーターで追加の状態をユーザーに公開したい場合は、ジェネレーター関数コードをメソッドに入れて、クラスとして簡単に実装できることを忘れないでください。」__iter__()

import io

class playyield:
    def __init__(self,fp):
        self.completefp = fp

    def __iter__(self):
        for line in self.completefp:
            if 'python' in line:
                yield line

if __name__ =='__main__':
    with io.open(r'K:\Data\somefile.txt','r') as fp:
        playyieldobj = playyield(fp)
        for i in playyieldobj:
            print I

質問:

  1. ここで余分な状態とはどういう意味ですか?
  2. に別の関数を使用する代わりにyieldinsideを使用する利点は何ですか?__iter__ ()yield
4

1 に答える 1