for适用于遍历已知长度的可迭代对象,自动调用__iter__和__next__,安全简洁;while适用于条件驱动、次数未知的场景,需手动管理变量,灵活但易出错。
for 适合遍历已知长度的序列(比如列表、字符串、range),while 更适合在条件满足时持续执行,直到条件不成立为止。
它隐含了迭代过程,自动取下一个元素,不用手动控制索引或状态。Python 的 for 实际上是“for each”语义,背后调用的是对象的 __iter__ 和 __next__ 方法。
for x in items:,无需初始化变量、判断边界、更新计数器IndexError)它靠布尔表达式控制循环是否继续,适合无法预知执行次数的场景,比如等待用户输入、读取网络响应、处理队列直到为空等。
i += 1),否则容易陷入死循环计算 1 到 10 的和:
用 for:
total = 0
for i inrange(1, 11):
total += i
用 while:
total = 0
i = 1
while i <= 10:
total += i
i += 1
前者更直观;后者虽可行,但多出两行状态管理代码,且若漏写 i += 1 就会无限循环。