我不明白调用以下函数时发生了什么:
def doSmth(inFile):
print inFile
with open(inFile,'r') as trainSet:
for instLine in trainSet:
# do smth
yield instLine
为什么当删除带有yield的最后一行时出现错误 该文件不存在(它确实不存在)。然而,当我有线 ,没有错误。 另一个问题,为什么在第二种情况下, print inFile 在第一种情况下没有效果。 感谢。
答案 0 :(得分:3)
因为你实际上没有迭代生成器:
您的代码中有类似的内容:
doSmth() # simply creates generator without advancing it
没有for x in doSmth()