条件控制基础

Python 中的条件控制通过 ifelifelse 语句实现,依靠缩进来定义代码块。条件表达式返回布尔值 TrueFalse

age = 18

if age >= 18:
    print("成年人")  # 条件为真时执行
else:
    print("未成年人")  # 条件为假时执行
比较运算符

条件判断中常用的比较运算符包括:

a, b = 10, 20

print(a == b)   # 等于: False
print(a != b)   # 不等于: True
print(a > b)    # 大于: False
print(a < b)    # 小于: True
print(a >= 10)  # 大于等于: True
print(b <= 15)  # 小于等于: False
多分支判断

使用 elif 处理多个互斥条件,实现多路分支:

score = 85

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"      # 满足此条件,执行后跳过后续分支
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"

print(f"成绩等级: {grade}")  # 输出: 成绩等级: B
逻辑运算符

使用 andornot 组合多个条件:

username = "admin"
password = "123456"

# 同时满足多个条件
if username == "admin" and password == "123456":
    print("登录成功")
else:
    print("用户名或密码错误")

# 满足任一条件即可
day = "周六"
if day == "周六" or day == "周日":
    print("休息日")

# 取反
is_raining = False
if not is_raining:
    print("可以出门")
嵌套条件

条件语句内部可以嵌套另一个条件语句:

has_ticket = True
knife_length = 8  # 厘米

if has_ticket:
    print("已购票,进入安检")
    if knife_length > 0:
        if knife_length <= 6:
            print("刀具符合规定,允许携带")
        else:
            print("刀具过长,禁止携带")
    else:
        print("未携带刀具,直接通行")
else:
    print("请先购票")
三元表达式

Python 支持简洁的条件表达式,适合简单的二选一赋值:

age = 20

# 传统写法
if age >= 18:
    status = "成年"
else:
    status = "未成年"

# 三元表达式(更简洁)
status = "成年" if age >= 18 else "未成年"
print(status)  # 输出: 成年

# 三元表达式用于函数返回值
def max_num(a, b):
    return a if a > b else b

print(max_num(10, 20))  # 输出: 20
成员判断

使用 innot in 判断元素是否存在于序列中:

fruits = ["apple", "banana", "cherry"]

# 判断元素是否在列表中
if "apple" in fruits:
    print("有苹果")

# 判断元素是否不在列表中
if "orange" not in fruits:
    print("没有橙子")

# 判断子串是否在字符串中
text = "Hello, Python!"
if "Python" in text:
    print("包含 Python")
空值判断

Python 中 None、空字符串、空列表、空字典等会被视为假值:

name = ""
items = []
data = None

# 直接判断真假(推荐)
if name:
    print(f"名字是: {name}")
else:
    print("名字为空")  # 空字符串为假

if items:
    print("列表不为空")
else:
    print("列表为空")  # 空列表为假

# 显式判断 None
if data is None:
    print("数据未初始化")

# 判断非 None
if data is not None:
    print("数据已存在")
match-case 模式匹配(Python 3.10+)

Python 3.10 引入了 match-case 语句,实现更清晰的模式匹配:

def http_status(status):
    match status:
        case 200:
            return "OK"
        case 404:
            return "Not Found"
        case 500:
            return "Internal Server Error"
        case _:
            return "Unknown status"

print(http_status(404))  # 输出: Not Found

# 匹配数据结构
point = (3, 4)
match point:
    case (0, 0):
        print("原点")
    case (x, 0):
        print(f"x 轴上的点,x={x}")
    case (0, y):
        print(f"y 轴上的点,y={y}")
    case (x, y):
        print(f"普通点 ({x}, {y})")
短路求值技巧

利用逻辑运算符的短路特性简化条件判断:

user = None
name = user and user.name  # user 为 None 时直接返回 None,不会访问 user.name

# 提供默认值
config = {}
timeout = config.get("timeout") or 30  # 若值为假值,使用默认值 30

# 安全获取属性(Python 3.8+)
# value = user?.profile?.email  # 其他语言的空安全语法
value = user and user.profile and user.profile.email  # Python 等效写法
性能注意事项

条件控制在 Python 中需要特别注意代码风格和可读性:

  • 避免深层嵌套,优先使用提前返回(Guard Clause)

  • 复杂条件提取为布尔变量或函数,提高可读性

  • 频繁调用的条件判断考虑使用字典映射替代多分支

  • 注意 is== 的区别:is 判断身份(内存地址),== 判断值相等

以上代码示例涵盖了 Python3 条件控制的主要概念和操作,从基础用法到高级技巧,为开发者提供了全面的参考。

更多推荐