在学习python的过程中,有一些涉及到程序调用和运行的概念会比较难理解。本文就会介绍python内部执行过程中的一个组件-迭代器,往下看看吧。
到目前为止,大家可能已经注意到大多数容器对象都可以使用for语句,例如:
for char in "123": print(char) for line in open("myfile.txt"): print(line, end='')
这种访问风格清晰、简洁又方便。迭代器的使用非常普遍并使得Python成为一个统一的整体。在幕后,for语句会在容器对象上调用iter()。该函数返回一个定义了__next__()方法的迭代器对象,此方法将逐一访问容器中的元素。当元素用尽时,__next__()将引发StopIteration异常来通知终止for循环。你可以使用next()内置函数来调用__next__()方法;这个例子显示了它的运作方式:
>>> s = 'c' >>> it = iter(s) >>> next(it) 'c' >>> next(it) Traceback (most recent call last): File "<stdin>", line 1, in <module> next(it) StopIteration
看过迭代器协议的幕后机制,给你的类添加迭代器行为就很容易了。定义一个__iter__()方法来返回一个带有__next__()方法的对象,如果类已定义了__next__(),则__iter__()可以简单地返回self,示例如下:
class Reverse:
def __next__(self):
if self.index == 0:
raise StopIteration
self.index = self.index - 1
return self.data[self.index]
以上就是python迭代器的原理和实现方法了,希望对你有所帮助。