continue 是一个在循环中非常有用的控制流语句,它的作用是立即终止当前次循环的剩余代码,并直接跳回到循环的开头,开始下一次循环。

可以把它想象成在跑步比赛中,你跑完一圈后,决定放弃休息,直接开始下一圈的冲刺。
continue 的工作原理
当程序执行到 continue 语句时:
- 跳过:
continue之后、循环体结束之前的所有代码都将被忽略。 - 继续:程序的控制流会立即跳转到循环的条件判断部分(对于
while循环)或者迭代器部分(对于for循环)。 - 下一次循环:如果循环条件仍然满足(对于
while)或者还有更多元素可以迭代(对于for),则开始执行下一次循环。
continue 在 for 循环中的示例
这是 continue 最常见的使用场景,假设我们想遍历一个数字列表,但只处理偶数,跳过所有奇数。
# 目标:打印列表中的所有偶数,跳过奇数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("开始处理列表...")
for number in numbers:
# 1. 检查数字是否为奇数
if number % 2 != 0:
# 2. 如果是奇数,执行 continue
print(f"发现奇数 {number},跳过处理。")
continue # 立即跳转到 for 循环的下一次迭代
# 3. 这里的代码只在 number 是偶数时才会执行
print(f"处理偶数: {number}")
print("\n列表处理完毕。")
输出结果:

开始处理列表...
发现奇数 1,跳过处理。
处理偶数: 2
发现奇数 3,跳过处理。
处理偶数: 4
发现奇数 5,跳过处理。
处理偶数: 6
发现奇数 7,跳过处理。
处理偶数: 8
发现奇数 9,跳过处理。
处理偶数: 10
列表处理完毕。
代码流程解析:
- 当
number是 1 时,1 % 2 != 0为True,执行print和continue。print(f"处理偶数: {number}")这一行被跳过。 - 当
number是 2 时,2 % 2 != 0为False,if语句块不执行,程序继续执行到print(f"处理偶数: {number}")并打印结果。 - 这个过程对列表中的每一个元素都重复进行。
continue 在 while 循环中的示例
continue 在 while 循环中的工作原理完全相同。
# 目标:从 0 打印到 4,但跳过数字 3
count = 0
print("开始 while 循环...")
while count < 5:
if count == 3:
print(f"计数器为 {count},跳过!")
count += 1 # 重要!避免死循环
continue # 跳过本次循环剩余代码,直接回到 while count < 5 的判断
print(f"当前计数: {count}")
count += 1 # 正常递增
print("\nwhile 循环结束。")
输出结果:
开始 while循环...
当前计数: 0
当前计数: 1
当前计数: 2
计数器为 3,跳过!
当前计数: 4
while 循环结束。
⚠️ 重要提示:在 while 循环中使用 continue 时要格外小心!

在上面的例子中,if count == 3 的代码块里有一个 count += 1。为什么这里必须有它?
- 如果没有
count += 1,当count变成 3 时,if条件成立。 - 程序执行
continue,跳过了循环末尾的count += 1。 - 下一次循环开始时,
count的值仍然是 3。 while count < 5仍然为True。if count == 3再次成立...- 这将导致一个无限循环,因为
count永远无法增加到 4 或 5。
在使用 while 循环和 continue 时,要确保你的循环变量(这里是 count)在 continue 被执行时,仍然有被正确更新的机会,以避免死循环。
continue vs. break
初学者很容易混淆 continue 和 break,它们的作用截然不同。
| 特性 | continue |
break |
|---|---|---|
| 作用 | 跳过当前循环的剩余部分,继续下一次循环。 | 完全终止整个循环,循环不再继续执行。 |
| 循环行为 | 循环继续。 | 循环终止。 |
| 类比 | 跑步时,放弃休息,直接跑下一圈。 | 跑步时,放弃比赛,直接离开跑道。 |
示例对比:
# 使用 continue
print("--- 使用 continue ---")
for i in range(5):
if i == 2:
continue
print(i)
# 输出: 0, 1, 3, 4 (2被跳过,但循环继续)
# 使用 break
print("\n--- 使用 break ---")
for i in range(5):
if i == 2:
break
print(i)
# 输出: 0, 1 (当i为2时,循环被终止,3和4不会被打印)
continue 的实际应用场景
continue 通常用于以下情况:
-
数据过滤:在遍历数据集(如从文件读取的行、数据库查询结果)时,跳过不符合特定条件的项。
# 过滤掉注释行(以 # 开头)和空行 for line in file_lines: line = line.strip() if not line or line.startswith('#'): continue # 处理有效数据行... process(line) -
提前结束迭代:当在循环中完成某个任务后,无需再执行后续代码,直接进入下一次迭代。
for item in items: # 尝试处理一个项目 if not process_item(item): # 如果处理失败,记录并跳过,尝试下一个 log_error(item) continue # 只有处理成功时才会执行的代码 save_success(item) -
简化代码结构:使用
continue可以将嵌套的if-else结构(特别是深层嵌套)转换为更扁平、更易读的结构,这被称为“卫语句”(Guard Clause)模式。不推荐(嵌套过深):
for user in users: if user.is_active: if user.has_permission: # 真正的业务逻辑在这里 perform_action(user)推荐(使用
continue,更清晰):for user in users: if not user.is_active: continue # 如果不活跃,直接跳过 if not user.has_permission: continue # 如果没有权限,也直接跳过 # 现在的代码逻辑更清晰,只处理符合条件的用户 perform_action(user)
continue用于跳过当前循环的剩余部分。- 它会立即将控制流返回到循环的开头,准备下一次迭代。
- 在
for循环中,它会获取下一个元素。 - 在
while循环中,它会重新判断循环条件。使用时要小心,确保不会导致无限循环。 continue和break的核心区别在于:continue是“跳过本次”,break是“终止整个循环”。continue是一个强大的工具,用于简化逻辑、过滤数据和提高代码可读性。
