飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 第1章 Python简介

    • Python是什么
    • 安装与运行
    • 交互式解释器
    • 注释与编码规范
  • 第2章 变量与数据类型

    • 变量与对象
    • 整数 int
    • 浮点数 float
    • 复数 complex
    • 布尔值 bool
    • 字符串 str
    • 空值 None
    • 类型转换
  • 第3章 运算符与表达式

    • 算术运算符
    • 比较运算符
    • 赋值运算符
    • 逻辑运算符
    • 位运算符
    • 身份与成员运算符
    • 海象运算符
    • 运算符优先级
  • 第4章 流程控制

    • if 语句
    • if-else 语句
    • if-elif-else 语句
    • match-case 语句
    • 条件表达式(三元运算符)
    • while 循环
    • for 循环
    • range 函数
    • break 与 continue
    • 循环的 else 子句
    • pass 语句
  • 第5章 数据结构

    • 列表创建与索引
    • 列表方法
    • 列表推导式
    • 元组
    • 序列解包
    • 集合
    • 字典创建与访问
    • 字典方法
    • 字典推导式
    • range 对象
  • 第6章 函数

    • 定义函数
    • 位置参数与关键字参数
    • 默认参数
    • 可变参数
    • 解包实参
    • 函数返回值
    • lambda 表达式
    • 文档字符串与注解
    • 作用域与命名空间
    • global 与 nonlocal
  • 第7章 模块与包

    • 模块导入
    • 模块搜索路径
    • 包与相对导入
    • 标准库概览
  • 第8章 文件与输入输出

    • 文件读写
    • 上下文管理器
    • 字符串格式化
    • JSON 与 CSV
  • 第9章 面向对象

    • 类与对象
    • 方法
    • 实例变量与类变量
    • 私有变量
    • 继承
    • 多重继承
    • 魔术方法
    • 属性装饰器
    • 数据类 dataclass
  • 第10章 异常处理

    • 语法错误与异常
    • try-except
    • 异常链与 raise
    • 清理操作
    • 自定义异常
  • 第11章 迭代器与生成器

    • 迭代器协议
    • 生成器
    • 生成器表达式
    • 迭代工具
  • 第12章 高级特性

    • 装饰器
    • 函数式编程
  • 第13章 工程实践

    • 测试与调试
    • 代码质量
    • 虚拟环境

if 语句

if 语句是 Python 中最基础的条件控制结构,它让程序能够根据某个条件的真假来决定是否执行一段代码。条件本身是一个表达式,Python 会将其求值为布尔值 True 或 False,只有当条件为真时,if 下方的代码块才会被执行。

基本语法

if 语句以关键字 if 开头,后跟一个条件表达式和冒号,下一行开始缩进的代码块构成该条件的执行体:

x = 42

if x > 0:
    print("x 是正数")

这里的 x > 0 是一个关系表达式,返回布尔值。当 x 为 42 时,条件为 True,于是打印出结果。如果 x 改为 -5,条件为 False,print 语句不会执行,程序直接跳过整个代码块继续向下运行。

缩进规则

Python 用缩进来表示代码块的归属,而不是像 C 或 Java 那样使用大括号。这是 Python 语法最显著的特征之一。if 语句的代码块必须比 if 本身缩进一层,通常使用 4 个空格:

score = 85

if score >= 60:
    print("成绩合格")
    print("可以参加下一阶段学习")

同一代码块内的所有语句必须保持相同的缩进量。如果缩进不一致,解释器会抛出 IndentationError:

# 错误示例
if score >= 60:
    print("成绩合格")
      print("缩进不一致")  # IndentationError

缩进不仅是一种风格,更是语法的一部分。PEP 8 建议使用 4 个空格而非制表符,以避免不同编辑器显示不一致的问题。

条件表达式

if 后面的条件可以是任何表达式,Python 会将其转换为布尔值进行判断。常见的条件形式包括:

关系运算:

age = 20
if age >= 18:
    print("已成年")

相等判断:注意使用 == 而非赋值运算符 =:

name = "Python"
if name == "Python":
    print("这是 Python")

成员判断:用 in 检查某个值是否存在于序列中:

tags = ["python", "java", "go"]
if "python" in tags:
    print("包含 Python 标签")

逻辑组合:用 and、or、not 组合多个条件:

temperature = 25
humidity = 60

if temperature > 20 and humidity < 80:
    print("天气舒适")

链式比较

Python 支持链式比较,可以像数学表达式一样连续书写,这比用 and 连接更简洁直观:

score = 85

if 80 <= score < 90:
    print("B 等级")

上面的写法等价于 score >= 80 and score < 90,但只计算 score 一次,且可读性更好。链式比较可以任意延长:

x = 5
if 1 < x < 10 < 100:
    print("x 在合理范围内")

真值判断

Python 中并非只有 True 和 False 才能作为条件,几乎所有对象都自带"真值"(truthiness)。在 if 语句中,以下值会被视为假(falsy):

  • None
  • False
  • 数值零:0、0.0、0j
  • 空序列和空映射:''、[]、()、{}、set()、range(0)

其余对象在布尔上下文中均被视为真(truthy)。利用这一特性,可以写出简洁而地道的条件代码:

name = "航仔"
if name:  # 字符串非空,为真
    print(f"欢迎 {name}")

items = []
if not items:  # 列表为空,not 后为真
    print("购物车是空的")

对于可能为 None 的变量,可以直接判断:

result = None
if result:
    print("有结果")
else:
    print("尚无结果")

如果需要严格区分 None 和空值,应使用 is None:

data = []
if data is None:
    print("未初始化")
elif not data:
    print("已初始化但为空")

空代码块的处理

如果某个条件下暂时不需要执行任何操作,但又必须保留语法上的语句体,可以使用 pass 语句占位:

x = -1
if x < 0:
    pass  # 负数情况待处理

pass 不执行任何动作,仅满足"代码块至少包含一条语句"的语法要求。

常见错误

初学者在使用 if 语句时容易犯以下错误:

混淆赋值与比较:

# 错误
if x = 5:  # SyntaxError
    pass

# 正确
if x == 5:
    pass

忘记冒号:

# 错误
if x > 0  # SyntaxError: expected ':'
    print("正数")

缩进使用制表符与空格混用:

# 可能引发 TabError
if x > 0:
\tprint("使用制表符")
    print("使用空格")

误用括号:Python 的条件不需要括号包裹,虽然加上也不会报错,但不必要:

if (x > 0):  # 可以运行,但不推荐
    print("正数")

if 语句是所有条件分支的起点,理解它的缩进规则、真值判断和链式比较,是掌握 Python 流程控制的第一步。

下一页
if-else 语句