Python 教程之控制流(2)for 循环如何在内部工作?

195 阅读2分钟

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第22篇文章,点击查看活动详情

在继续本节之前,我们应该事先了解 Python 迭代器。

首先,让我们看看一个简单的 for 循环是什么样子的。

# 一个简单的 for 循环示例

fruits = ["apple", "orange", "kiwi"]

for fruit in fruits:

print(fruit)

输出

apple
orange
kiwi

在这里,我们可以看到 for 循环迭代了可迭代对象fruit,它是一个列表。列表、集合、字典是少数可迭代对象,而整数对象不是可迭代对象。

For 循环可以迭代任何可迭代对象(例如:List、Set、Dictionary、Tuple 或 String)。

现在借助上面的例子,让我们深入了解一下这里内部发生​​了什么。

  1. 借助 iter() 函数使列表(可迭代)成为可迭代对象。
  2. 运行无限 while 循环并仅在引发 StopIteration 时才中断。
  3. 在 try 块中,我们使用 next() 函数获取水果的下一个元素。
  4. 获取元素后,我们执行了要对元素执行的操作。(即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() 方法。

如果你发现本文有什么问题,欢迎在评论区指正。最后,不要忘了❤或📑支持一下哦,你的支持是海海更新的动力!关注我后面会持续分享面试经验 & 前端相关的专业知识。