python的迭代器
时间: 2023-11-05 17:59:04 浏览: 89
迭代器是Python中用于遍历可迭代对象的一种机制。一个类或对象只要实现了`__iter__`和`__next__`这两个方法,就可以被称为迭代器。其中,`__iter__`方法返回一个特殊的迭代器对象,而这个迭代器对象自动实现了`__next__`方法,并通过返回一个值来迭代对象的元素。当没有更多元素可迭代时,`__next__`方法会抛出`StopIteration`异常来结束迭代。
对于一个可迭代对象来说,它需要具有一个能够返回一个迭代器对象的`__iter__`方法。迭代器对象是通过`__iter__`方法返回的,可以是对象自身(前提是对象本身就是一个迭代器),也可以是其他迭代器对象。而`__next__`方法则用于标记并返回下一个迭代器对象。
下面是一个例子:
```python
from collections import Iterable, Iterator
class Classmate(object):
"""定义一个同学类"""
def __init__(self):
self.name = list()
self.name_num = 0
def add(self, name):
self.name.append(name)
def __iter__(self):
return self # 返回本身
def __next__(self):
if self.name_num < len(self.name):
ret = self.name[self.name_num]
self.name_num += 1
return ret
else:
raise StopIteration
class1 = Classmate()
class1.add("张三")
class1.add("李四")
class1.add("王五")
print("判断是否是可迭代的对象:", isinstance(class1, Iterable))
print("判断是否是迭代器:", isinstance(class1, Iterator))
for name in class1:
print(name)
```
在这个例子中,`Classmate`类实现了`__iter__`和`__next__`方法。`__iter__`方法返回了自身作为迭代器对象,而`__next__`方法则按顺序返回了班级同学的名字,直到没有更多名字可迭代时抛出`StopIteration`异常。
阅读全文