Python 核心语法(二)—— 流程控制语句(基于 Python 3.12/3.14 官方文档,2026 年最新版)
这是 Python 入门到中级的最核心章节(官方教程第 4 章“更多控制流工具”)。掌握后,你能写出清晰、高效、Pythonic 的代码,面试中“流程控制”题基本无敌。
下面按官方结构 + 实战 + 面试点系统讲解,所有示例均可在 Python 3.12+ 直接运行。
1. if 语句(条件判断)
核心:最常用条件分支,支持 elif(else if 的缩写)和 else。if-elif-else 可替代其他语言的 switch。
x = int(input("请输入一个整数: "))
if x < 0:
print('负数已改为零')
x = 0
elif x == 0:
print('零')
elif x == 1:
print('单个')
else:
print('更多')
面试金句:elif 避免深层缩进,逻辑清晰。复杂多值判断推荐用下面的 match。
2. for 语句(迭代循环)
核心:Python 的 for 是 for-each 风格,遍历任意可迭代对象(list、tuple、str、dict、range、文件等),按出现顺序迭代。
words = ['cat', 'window', 'defenestrate']
for w in words:
print(w, len(w))
# 遍历字典(推荐用 .items())
users = {'Hans': 'active', 'Éléonore': 'inactive'}
for user, status in users.items():
if status == 'inactive':
print(user, '已删除')
重要注意(面试常问):
- 迭代时不要直接修改被遍历的序列(会导致跳过元素或无限循环)。
- 正确做法:迭代副本
users.copy().items()或新建新集合。
3. range() 函数(数字序列生成器)
核心:生成等差数列,惰性求值(不一次性创建列表,省内存)。不包含结束值。
for i in range(5): # 0,1,2,3,4
print(i)
list(range(5, 10)) # [5,6,7,8,9]
list(range(0, 10, 3)) # [0,3,6,9]
list(range(-10, -100, -30)) # [-10,-40,-70]
# 配合 len() 遍历索引(新手常用)
a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
print(i, a[i])
# 推荐写法:enumerate()
for i, word in enumerate(a):
print(i, word)
4. while 语句(条件循环)
n = 10
while n > 0:
n -= 1
print(n)
else:
print('循环正常结束')
5. break 和 continue(循环控制)
break:立即跳出最近一层的for或while循环。continue:跳过本次循环剩余代码,直接进入下一次迭代。
# break 示例:找因子
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
else:
print(n, '是质数') # 注意这个 else!
6. 循环的 else 子句(Python 独有神器!面试高频)
核心规则:
for或while循环正常结束(没有遇到break)时,才执行else。break退出则跳过else。
经典用途:“循环找东西,找不到就执行 else”(质数判断、搜索失败处理)。
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
break
else:
print(n, '是质数')
7. pass 语句(占位符)
什么都不做,用于语法需要语句但逻辑还没写的情况。
while True:
pass # 忙等待 Ctrl+C
class MyEmptyClass:
pass
def initlog(*args):
pass # 以后再实现
8. match 语句(Python 3.10+ 结构化模式匹配,现代神器!)
这是 Python 3.10 引入的最重大语法改进,3.12 进一步优化性能和序列/映射匹配能力。强烈推荐用于多分支、解构、类型判断。
基本语法:
def http_error(status):
match status:
case 400:
return "Bad Request"
case 404:
return "Not Found"
case 418:
return "I'm a teapot"
case _: # 通配符,匹配任意
return "Something's wrong"
# 解构元组(最常用)
point = (3, 4)
match point:
case (0, 0):
print("原点")
case (0, y):
print(f"Y={y}")
case (x, 0):
print(f"X={x}")
case (x, y):
print(f"X={x}, Y={y}")
case _:
raise ValueError("不是点")
高级模式(面试加分):
# OR 模式
case 401 | 403 | 404:
return "Not allowed"
# 序列模式 + * 解包
match [1, 2, 3, 4]:
case [first, *middle, last]:
print(first, middle, last) # 1 [2, 3] 4
# 类模式(需定义 __match_args__)
class Point:
__match_args__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
match Point(10, 20):
case Point(x=0, y=y):
print(f"Y轴: {y}")
case Point(x=x, y=0):
print(f"X轴: {x}")
# 守卫(guard)—— 匹配后额外条件
case (x, y) if x == y:
print(f"对角线上的点 {x}")
match vs if-elif:
- 简单值比较用
if即可。 - 需要解构、模式匹配、类型判断时,
match代码更简洁、可读性更高。
一句话总结(面试 30 秒回答版)
“Python 流程控制包括
if-elif-else、for(遍历可迭代对象)、while、range()、break/continue、循环else(正常结束才执行)、pass占位符,以及 Python 3.10+ 引入的match-case结构化模式匹配(支持解构、守卫、序列/映射/类模式)。for-else和match是 Python 最 Pythonic 的特色。”
这套内容直接来自官方文档,背熟后能轻松应对所有流程控制面试题!
需要我继续出 Python 核心语法(三)—— 函数详解(默认参数、可变参数、lambda、闭包、装饰器等)吗?或者直接给你 配套练习题 + 面试 15 道真题?
随时说~ 这系列正在连载,下一讲马上安排!🚀