在继续本节之前,我们应该事先了解 Python 迭代器。
首先,让我们看看一个简单的 for 循环是什么样子的。
# 一个简单的 for 循环示例 fruits = ["apple", "orange", "kiwi"] for fruit in fruits: print(fruit)
输出
apple orange kiwi
在这里,我们可以看到 for 循环迭代了可迭代对象fruit,它是一个列表。列表、集合、字典是少数可迭代对象,而整数对象不是可迭代对象。
For 循环可以迭代任何可迭代对象(例如:List、Set、Dictionary、Tuple 或 String)。
现在借助上面的例子,让我们深入了解一下这里内部发生了什么。
- 借助 iter() 函数使列表(可迭代)成为可迭代对象。
- 运行无限 while 循环并仅在引发 StopIteration 时才中断。
- 在 try 块中,我们使用 next() 函数获取水果的下一个元素。
- 获取元素后,我们执行了要对元素执行的操作。(即print(fruit))
fruits = ["apple", "orange", "kiwi"] # 从该可迭代对象(即水果)创建一个迭代器对象 iter_obj = iter(fruits) # 无限while循环 while True: try: # 获取下一个项目 fruit = next(iter_obj) print(fruit) except StopIteration: # 如果引发了 StopIteration,则从循环中中断 break
输出
apple orange kiwi
我们可以看到,在底层我们调用了 iter() 和 next() 方法。