1

我不明白调用以下函数时发生了什么:

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

            # do smth
            yield instLine

为什么当删除最后一行 yield 时会出现文件不存在的错误(它真的不存在)。然而,当我有 line 时,没有错误。另一个问题,为什么在第二种情况下,print inFile在第一种情况下没有效果。谢谢。

4

1 回答 1

3

因为您实际上并没有迭代生成器:

您的代码中有类似的内容:

doSmth() # simply creates generator without advancing it

没有for x in doSmth()

于 2013-06-07T22:37:32.417 回答