2
我有一個關於生成器和文件對象的問題。Python生成器和文件對象
如果我寫的代碼
def iter(ls):
count=0
for k in ls:
if count==2:
break
count+=1
for k in ls:
yield k
test=[1,2,3,4]
k=iter(test)
for i in k:
print i
則輸出
是的,我能理解這一點,因爲在這段代碼break語句不會影響以下yield語句。
但是,如果我做類似的事情與文件,在這種情況下,我做一個「數據」的文件,這是寫
1
2
3
4
,如果我只更改線路
test=[1,2,3,4] → test=open("data","r")
然後結果是
這意味着break語句以某種方式起作用,所以gentor for循環中的yield「yield」與前面的case不同。
這種差異的原因是什麼?