优秀的编程知识分享平台

网站首页 > 技术文章 正文

Python自动化办公应用学习笔记16——分支结构

nanyue 2025-07-27 22:52:18 技术文章 1 ℃

一、单分支结构 (if 语句):
if 语句的语法格式如下:

if <条件>:

<语句块>

· 语句块: 是当 if 后面的条件满足(结果为 True)时要执行的一个或多个语句。这些语句必须通过缩进(通常是一个 Tab 键或 4 个空格) 来表明它们属于这个 if 语句。

· 执行过程:

1. if 语句会先检查条件的结果是 True 还是 False

2. 如果结果是 True,就执行缩进的语句块

3. 如果结果是 False,就跳过这个语句块

4. 无论条件是否满足,执行完(或跳过)语句块后,程序都会继续执行 if 语句后面、与 if 开头对齐的下一条代码

· 条件: if 后面的条件可以是任何能得出 TrueFalse 结果的表达式或函数。最常用的是比较运算符(比如 ==, >, <, != 等)。

二、二分支结构 (if-else 语句):
if-else 语句用来处理条件的两种可能结果,语法格式如下:

if <条件>:

<语句块1>

else:

<语句块2>

· 执行过程:

1. 先检查 if 后面的条件。

2. 如果条件为 True,执行 语句块1

3. 如果条件为 False,执行 语句块2

4. 执行完 语句块1语句块2 后,程序继续执行 else 后面、与 if 开头对齐的下一条代码。

· 简洁表达式 (三元表达式):
对于只需要根据条件返回一个值的简单情况,可以用更简洁的写法:

<表达式1> if <条件> else <表达式2>

o 如果条件为 True,整个表达式的结果就是 <表达式1> 的值。

o 如果条件为 False,整个表达式的结果就是 <表达式2> 的值。

o <表达式1><表达式2> 通常是简单的值(如数字、字符串)或能计算出值的表达式。

三、多分支结构:

1. if-elif-else 语句:
这是二分支的扩展,用于处理多种可能的情况。语法格式如下:

if <条件1>:

<语句块1>

elif <条件2>:

<语句块2>

... # 可以有多个 elif

else: # 可选的

<语句块N>

o 执行过程:

1. 按顺序(从上到下)检查每个条件(if, elif)。

2. 找到第一个结果为 True 的条件,就执行它对应的语句块

3. 执行完该语句块后,跳过后面所有的 elif 和 else,直接执行整个结构后面的代码。

4. 如果所有 if 和 elif 的条件都是 False,那么就会执行 else 下面的 <语句块N>(如果有的话)。

o 注意: else 部分不是必须写的,它是所有条件都不满足时的“兜底”选项。

2. match-case 语句 (Python 3.10+ 引入):
Python 3.10 引入了 结构化模式匹配 (match-case),它功能更强大,特别适合根据一个值(subject) 的结构或内容来匹配不同的情况。基础语法:

match <要匹配的值>:

case <模式1>:

# 处理模式1匹配的情况

case <模式2> if <守卫条件>: # 可以加额外的判断条件(守卫)

# 处理模式2匹配且守卫条件也满足的情况

case _: # 通配符,匹配任何情况(类似 switch 里的 default)

# 默认处理(前面都没匹配上时执行)


o 匹配常量(数值、字符串等):

def http_status(code):

match code:

case 200:

return "OK"

case 404:

return "Not Found"

case 500 | 501: # 用 | 匹配多个值

return "Server Error"

case _: # 匹配所有其他情况

return "Unknown Status"


o 使用守卫条件 (if): 在匹配到模式后,可以再用 if 进行更精细的判断:

match point: # 假设 point 是一个 (x, y) 坐标

case (x, y) if x > y: # 匹配坐标,并且要求 x > y

print("X is greater")

case (x, y) if x < y:

print("Y is greater")

case (x, y): # 匹配坐标,但 x 等于 y 的情况

print("X equals Y")


o 重要特点:

§ 顺序敏感: case 是按代码顺序检查的,第一个匹配成功的 case 会被执行,后面的 case 不再检查。

§ 不一定强制穷举: Python 不要求你匹配所有可能情况。但为了避免遗漏,强烈建议使用 case _: 作为最后的兜底选项

§ 变量作用域:case 模式中用来“捕获”值的变量名(如上面 x, y),只在这个 case 块内部有效。如果外部有同名变量,在这个 case 块里会被覆盖(仅限块内)。

§ 不能直接写运算符: 不能在 case 后面直接写 is, ==, in 等运算符进行比较。需要用守卫条件 (if) 或者在模式中匹配具体值来实现。

o 对于复杂多分支逻辑,优先考虑 match-case(尤其是在 Python 3.10 及以上版本),因为它通常比一长串 if-elif-elif 更清晰、更强大。

最近发表
标签列表