目录
3. match-case(Python 3.10及以上版本)
Python 3 中的条件控制主要通过以下几种结构实现:
1. if
语句
最基本的条件控制结构是 if
语句,用于根据给定条件的真假来决定是否执行某段代码。基本语法如下:
if condition:
# 当 condition 为 True 时执行的代码块
statement1
statement2
...
其中,condition
是一个布尔表达式(其结果为 True
或 False
),冒号 :
后面跟着一个缩进的代码块,该代码块只有当 condition
为 True
时才会被执行。
2. elif
(else if)
为了处理多个互斥条件,可以使用 elif
(是 else if
的缩写)来添加额外的条件分支。elif
之后同样跟一个条件和一个代码块。当主 if
条件不成立时,程序会继续检查 elif
子句,直到遇到第一个为 True
的条件,执行对应的代码块,并跳过后续的 elif
和 else
。基本语法如下:
if condition1:
# 当 condition1 为 True 时执行的代码块
statement1
elif condition2:
# 当 condition1 为 False 而 condition2 为 True 时执行的代码块
statement2
# 可以有更多 elif 子句...
else:
# 当所有条件均为 False 时执行的代码块
statement3
else
子句是可选的,它提供了一个“兜底”情况,即当所有前面的条件都不满足时执行的代码块。
3. match-case
(Python 3.10及以上版本)
从 Python 3.10 开始,引入了一种新的条件控制结构 match-case
(匹配模式),类似于其他编程语言中的 switch-case
结构。它允许对一个值进行多种模式的匹配,并根据匹配成功的模式执行相应的代码块。基本语法如下:
match expression:
case pattern1:
# 当 expression 与 pattern1 匹配时执行的代码块
statements1
case pattern2:
# 当 expression 与 pattern2 匹配时执行的代码块
statements2
# 可以有更多 case 子句...
case _:
# 默认情况,当 expression 与所有前面的模式都不匹配时执行
statements_default
案例:
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case _:
return "Something's wrong with the Internet"
上述等价于
if status == 400:
return "Bad request"
elif status == 404:
return "Not found"
elif status == 418:
return "I'm a teapot"
else:
return "Something's wrong with the Internet"
其中,expression
是要进行匹配的值,pattern
是一组用于匹配该值的规则,可以是简单的值、变量、类型、甚至是复杂的模式(如结构化模式匹配)。_
作为默认模式,表示任何未在前面 case 子句中匹配的情况。
4. 嵌套条件
上述条件控制结构可以互相嵌套,形成更复杂的逻辑判断。例如,在一个 if
或 elif
的代码块内部可以再放置另一个 if
语句,或者在 match-case
结构中嵌套使用 if
。
注意事项
缩进:Python 使用缩进来区分代码块,同一层次的
if
、elif
、else
或case
子句必须保持相同的缩进级别(通常为四个空格)。冒号:每个条件语句(
if
、elif
、match
)后面都要跟一个冒号:
,表示接下来是与该条件关联的代码块。布尔表达式:条件可以是任何产生布尔结果的表达式,包括比较运算、逻辑运算、属性或方法调用、变量状态检查等。
匹配模式:在
match-case
结构中,模式可以利用 Python 3.10 引入的模式匹配语法,提供比传统条件控制更强大的表达能力,比如同时检查变量的类型和值、解构复杂数据结构等。
综上所述,Python 3 提供了 if-elif-else
和 match-case
(Python 3.10 及以上版本)两种条件控制结构,以及通过适当的嵌套来实现复杂的逻辑判断,使程序能够根据不同的条件执行相应的代码片段。