首先,可以从字面意思上看出,iterator是名词--迭代器,iterable是形容词--可迭代的(XXX)。这样是不是就好理解了。
接下来,具体研究,到底怎么用。
对于一个数据类型,可以使用Iterator判断是不是迭代器,使用Iterable判断是不是可迭代的。
from collections.abc import Iterator, Iterable
# isinstance(XXX, Iterable)判断XXX是否可迭代
print(isinstance([1, 2, 3], Iterable))
print(isinstance((1, 2, 3), Iterable))
print(isinstance(123, Iterable))
# isinstance(XXX, Iterator)判断XXX是否为迭代器
print(isinstance([1, 2, 3], Iterator))
print(isinstance((), Iterator))
print(isinstance((x for x in range(10)), Iterator))
结果为: