1

次の関数が呼び出されたときに何が起こっているのかわかりません。

def doSmth(inFile):
    print inFile
    with open(inFile,'r') as trainSet:
        for instLine in trainSet:

            # do smth
            yield instLine

yield の最後の行が削除されると、ファイルが存在しないというエラーが発生するのはなぜですか (実際には存在しません)。一方、行がある場合、エラーはありません。もう 1 つの質問ですが、2 番目のケースではprint inFileが最初のケースでは効果があるのに効果がないのはなぜですか。ありがとう。

4

1 に答える 1

3

実際にはジェネレーターを反復処理していないため:

コードには次のようなものがあります。

doSmth() # simply creates generator without advancing it

なしでfor x in doSmth()

于 2013-06-07T22:37:32.417 に答える