簡體   English   中英

python迭代器:為什么行得通?

[英]python iterator: why does this work?

我有一個定義迭代器接口的對象,還包含一個內置的文件讀取器(並按如下方式使用其迭代器接口)

class MyIter(object):
    def __init__(path):
        self.file = open(path, "r")

    def next(self):
        line = self.file.next()
        return line

    def __iter__(self):
        return self

我稱其為:

r = MyIter("path_to_file")
for item in r:
    print item

這將整個文件打印到最后一行。 我的問題是,我不必為EOF添加任何檢查或檢查返回的行的長度來指定某些結束條件。 為什么這樣做?

next()方法返回下一行輸入,或者在命中EOF時提高StopIteration 因此,它將自動處理EOF限制。

您的下一個實現將調用具有自己的EOF檢查的file.next() “此方法返回下一個輸入行,或者在打開文件以供讀取時按下EOF時引發StopIteration”

我不是Python專家,但是您應該在for中引用“ item”嗎?

for item in r:
    print "item ==> ", item 

但是,是的,next()方法正在為您提高StopIteration。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM