小结

    凡是可作用于 for 循环的对象都是 Iterable 类型;

    凡是可作用于 next() 函数的对象都是 Iterator 类型,它们表示一个惰性计算的序列;

    集合数据类型如 list dict str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象。

    Python的 for 循环本质上就是通过不断调用 next() 函数实现的,例如:

    for x in [1, 2, 3, 4, 5]:

    pass

    实际上完全等价于:

    # 首先获得Iterator对象:

    it = iter([1, 2, 3, 4, 5])

    # 循环:

    while True:

    try:

    # 获得下一个值:

    x = next(it)

    except StopIteration:

    # 遇到StopIteration就退出循环

    break