__iter__()和__next__()是Python中可迭代对象和迭代器的两个核心函数。
可迭代对象是指实现了__iter__()函数的对象,而迭代器是指实现了__iter__()和__next__()函数的对象。迭代器通过__next__()函数实现逐个访问元素的功能。
具体来说,__iter__()函数用于返回一个迭代器对象,而__next__()函数则用于返回容器中的下一个元素。如果容器中已经没有元素可以迭代了,__next__()函数应该引发StopIteration异常。
下面是一些示例代码:
class MyList:
def __init__(self):
self.data = [1, 2, 3, 4]
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
self.index += 1
return value
# 创建可迭代对象
mylist = MyList()
# 使用for循环遍历
for item in mylist:
print(item)
在上面的示例代码中,MyList类实现了__iter__()和__next__()函数,因此它是一个可迭代对象和迭代器。在使用for循环遍历时,Python会自动调用__iter__()函数获取迭代器对象,并使用__next__()函数逐个读取元素。输出结果是:
1
2
3
4
需要注意的是,当一个对象既是可迭代对象,又是迭代器时,它应该返回自己本身。即__iter__()函数应该返回self,而不是另外一个实现了__next__()函数的对象。
248

被折叠的 条评论
为什么被折叠?



