在 Python 中,“条件”主要通过 if、elif、else 语句来实现,这是程序进行逻辑判断和分支执行的核心,下面我将从基础到高级,详细解释 Python 的条件方法。

基础:if, elif, else 语句
这是最基本、最常用的条件结构。
语法结构
if condition1:
# 当 condition1 为 True 时,执行这里的代码块
statement1
statement2
elif condition2:
# 当 condition1 为 False,且 condition2 为 True 时,执行这里的代码块
statement3
statement4
elif condition3:
# 当 condition1 和 condition2 都为 False,且 condition3 为 True 时,执行这里的代码块
statement5
else:
# 当以上所有条件都为 False 时,执行这里的代码块
statement6
关键点:
if:判断的起点,必须有。elif:"else if" 的缩写,可以有零个或多个。else:所有条件都不满足时的默认情况,可以有零个或一个。- 执行流程:Python 会从上到下依次检查每个条件,一旦遇到一个为
True的条件,就执行其对应的代码块,然后跳过整个if-elif-else结构的其余部分,如果所有条件都为False,则执行else代码块(如果存在)。
示例
age = 18
if age < 13:
print("儿童")
elif age < 18:
print("青少年")
elif age < 65:
print("成年人")
else:
print("老年人")
# 输出: 成年人
条件判断的核心:布尔值和比较运算符
条件语句的 condition 部分必须是一个能被评估为 布尔值 (True 或 False) 的表达式。
比较运算符
用于比较两个值,返回 True 或 False。

| 运算符 | 描述 | 示例 |
|---|---|---|
| 等于 | a == b |
|
| 不等于 | a != b |
|
> |
大于 | a > b |
< |
小于 | a < b |
>= |
大于或等于 | a >= b |
<= |
小于或等于 | a <= b |
注意: 用于判断相等性,而 是赋值操作,初学者容易混淆。
逻辑运算符
用于组合或修改布尔表达式。
| 运算符 | 描述 | 示例 |
|---|---|---|
and |
逻辑与:当两边都为 True 时,结果为 True |
x > 5 and x < 10 |
or |
逻辑或:当任意一边为 True 时,结果为 True |
x < 5 or x > 10 |
not |
逻辑非:将布尔值取反 | not (x > 5) |
成员运算符
用于检查一个值是否在某个序列(如列表、元组、集合、字符串)中。
| 运算符 | 描述 | 示例 |
|---|---|---|
in |
如果在指定序列中找到值,返回 True |
'a' in ['a', 'b', 'c'] |
not in |
如果在指定序列中未找到值,返回 True |
'd' not in ['a', 'b', 'c'] |
身份运算符
用于比较两个对象的内存地址(即它们是否是同一个对象)。

| 运算符 | 描述 | 示例 |
|---|---|---|
is |
如果是同一个对象,返回 True |
a = [1, 2]; b = a; a is b |
is not |
如果不是同一个对象,返回 True |
a = [1, 2]; b = [1, 2]; a is not b |
进阶技巧
1 短路求值
逻辑运算符 and 和 or 具有“短路”特性:
and:如果第一个表达式为False,第二个表达式不会被评估,整个结果直接为False。or:如果第一个表达式为True,第二个表达式不会被评估,整个结果直接为True。
这在避免潜在错误时非常有用,
# my_list 为空,my_list[0] 会引发 IndexError
# 但由于 `len(my_list) == 0` 为 True,短路发生,`my_list[0]` 不会被评估
if len(my_list) == 0 or my_list[0] == 'special_value':
print("列表为空或第一个元素是 special_value")
2 三元运算符
Python 提供了一种简洁的单行 if-else 结构,称为三元运算符。
语法:
value_if_true if condition else value_if_false
示例:
age = 20 status = "成年" if age >= 18 else "未成年" print(status) # 输出: 成年
3 真值测试
在 Python 中,除了 True 和 False,很多其他对象在布尔上下文中(如 if 语句)也有其“真值”。
以下对象在布尔上下文中被视为 False:
False(布尔值)None- 所有数字类型的零:
0,0,0j - 空的序列和集合:, ,
[],
几乎所有其他对象都被视为 True。
这意味着你可以直接在 if 语句中使用非布尔对象:
my_list = []
if my_list:
print("列表不为空")
else:
print("列表为空") # 会执行这里
my_string = "hello"
if my_string:
print("字符串不为空") # 会执行这里
特殊的条件处理:match 语句 (Python 3.10+)
Python 3.10 引入了 match 语句,它类似于其他语言中的 switch 语句,但功能更强大,尤其适合进行模式匹配。
语法:
match subject:
case pattern1:
# 当 subject 匹配 pattern1 时执行
...
case pattern2:
# 当 subject 匹配 pattern2 时执行
...
case _:
# 通配符,匹配所有未被前面 case 匹配的情况,相当于 else
...
示例:
def process_command(command):
match command:
case "start":
print("正在启动服务...")
case "stop":
print("正在停止服务...")
case "status":
print("服务正在运行。")
case _:
print("未知命令。")
process_command("start") # 输出: 正在启动服务...
process_command("pause") # 输出: 未知命令。
match 语句还可以匹配更复杂的模式,如元组、类型、值绑定等,是一个强大的工具。
| 方法/概念 | 描述 | 适用场景 |
|---|---|---|
if-elif-else |
基础的条件分支结构。 | 适用于绝大多数需要逻辑判断的场景。 |
| 比较/逻辑/成员运算符 | 构建条件表达式的工具。 | 任何需要判断变量值、关系或成员身份的地方。 |
| 三元运算符 | 简化的单行 if-else。 |
当需要根据条件为变量赋值时,使代码更简洁。 |
| 真值测试 | 利用对象的“真/假”特性进行判断。 | 检查列表、字符串、字典等是否为空,或变量是否存在。 |
| 短路求值 | and/or 的高效执行方式。 |
在组合条件时,避免不必要的计算或潜在的错误。 |
match 语句 |
强大的模式匹配工具。 | Python 3.10+,适用于需要根据对象结构进行多路分支的复杂场景。 |
掌握这些条件方法,你就能编写出逻辑清晰、健壮且高效的 Python 代码。
