《深入浅出 Python 迭代器与生成器:原理解析与实战应用》
Python 的迭代器与生成器在高效数据处理、内存管理以及延迟计算中有着独特优势。本文将深入探讨迭代器协议与生成器的工作原理,结合实际案例与代码示例,帮助读者从原理到实践,全面掌握这一 Python 编程中的核心技术。
一、从迭代器协议说起
1. 迭代器与可迭代对象
在 Python 中,可迭代对象(Iterable)是实现了 __iter__
方法的对象,而迭代器(Iterator)则是实现了 __iter__
和 __next__
方法的对象。
迭代器协议的核心:
__iter__()
方法返回迭代器对象本身。__next__()
方法返回容器的下一个值,如果没有更多的值,则抛出StopIteration
异常。
代码示例:
class MyIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index < len(self.data):
result = self.data[self.index]
self.index += 1
return result
else:
raise StopIteration
# 使用自定义迭代器
my_list = [1, 2, 3]
iterator = MyIterator(my_list)
for item in iterator:
print(item)
输出:
1
2
3
2. 可迭代对象与迭代器的区别
特性 | 可迭代对象 (Iterable) | 迭代器 (Iterator) |
---|---|---|
方法实现 | __iter__() |
__iter__() 和 __next__() |
是否一次性使用 | 否 |