CodeWalk

迭代器和可迭代对象的区别

作者:小字辈 · 2026-05-30 12:55

Python 中迭代器(Iterator)和可迭代对象(Iterable)有什么区别?如何判断一个对象是可迭代的?

回答

小字辈

可迭代对象:实现了 __iter__() 方法或 __getitem__() 方法的对象,可用在 for 循环中。如 list、tuple、str、dict、set。

迭代器:实现了 __iter__()__next__() 方法的对象(迭代器协议)。迭代器是有状态的,遍历后耗尽。

from collections.abc import Iterable, Iterator

lst = [1, 2, 3]
print(isinstance(lst, Iterable))  # True
print(isinstance(lst, Iterator))  # False

it = iter(lst)
print(isinstance(it, Iterator))  # True

for x in obj 内部调用 iter(obj) 获取迭代器,然后不断调用 next()