Python编程实战 · 基础入门篇 | Python的缩进与代码块

在学习任何编程语言时,我们都会遇到一个问题:代码的层次结构该怎么表示? 在 C、Java 等语言中,开发者通常用大括号 {} 来表示代码块。 但在 Python 中,一切都不同。 Python 没有大括号、没有 begin 和 end,它用一种更自然的方式------缩进,来体现代码逻辑。

这不仅是 Python 的语法规则,更是它优雅、简洁风格的核心体现。


一 为什么 Python 要用缩进

Python 的设计哲学之一是 "代码的可读性至上"。 缩进是一种强制性的格式要求,让程序结构一目了然,不需要额外的标识符。

例如,在其他语言中我们可能会写

c 复制代码
if (x > 0) {
    printf("x is positive");
} else {
    printf("x is non-positive");
}

而在 Python 中,则变成了

python 复制代码
if x > 0:
    print("x is positive")
else:
    print("x is non-positive")

没有大括号,没有多余符号,仅通过缩进,就能清晰地看出逻辑结构。


二 缩进的基本规则

Python 的缩进规则非常严格。 每个代码块必须使用相同数量的空格进行缩进。

具体规则如下

  1. 推荐使用 4 个空格 作为一个缩进层级(官方标准)。
  2. 同一个代码块内的所有语句缩进必须一致。
  3. 缩进不一致会导致 IndentationError(缩进错误)。

例如

python 复制代码
if True:
    print("正确的缩进")
    print("继续执行")

错误示例

python 复制代码
if True:
    print("缩进不一致")
      print("将会报错")

运行后会提示

makefile 复制代码
IndentationError: unexpected indent

三 Python 中的代码块

代码块(Code Block) 是指一组属于同一逻辑结构的语句。 在 Python 中,只要语句后面带有 冒号(:),就意味着接下来要写一个新的代码块。

常见的代码块包括

语句类型 示例
条件判断 if / elif / else
循环语句 for / while
函数定义 def
类定义 class
异常处理 try / except / finally

示例

python 复制代码
def greet(name):
    if name:
        print("Hello,", name)
    else:
        print("Hello, stranger")

在这里

  • def greet(name): 表示一个函数定义的开始
  • 紧跟的缩进部分,就是这个函数的代码块

四 缩进的层级结构

缩进不仅区分代码块,还表示逻辑的层级关系。

来看一个例子

python 复制代码
for i in range(3):
    if i % 2 == 0:
        print(i, "是偶数")
    else:
        print(i, "是奇数")
print("循环结束")

运行结果

复制代码
0 是偶数
1 是奇数
2 是偶数
循环结束

分析

  • for 下面的所有语句都向右缩进 4 个空格
  • if 和 else 属于 for 的代码块
  • print("循环结束") 没有缩进,代表它已经脱离了 for 语句的范围

缩进层级就像树的分支,层次越深,逻辑越具体。


五 缩进中的空格与 Tab

Python 对缩进的空格与 Tab 非常敏感。 混用空格和 Tab 会导致难以发现的错误。

推荐做法

  • 永远使用 空格缩进(4 个空格)
  • 在编辑器中设置自动将 Tab 转为空格

大多数现代 IDE(如 PyCharm、VS Code)都会自动处理缩进,只需在设置中勾选

"将 Tab 转换为空格(Convert tabs to spaces)"


六 空行与逻辑层次

除了缩进,空行 也在 Python 中扮演着重要角色。 空行不会影响代码运行,但能帮助分隔逻辑,使结构更加清晰。

例如

python 复制代码
def add(a, b):
    return a + b


def subtract(a, b):
    return a - b

函数之间的空行让结构更直观,符合 PEP 8(Python 官方编码规范)的要求。


七 实战案例:缩进决定逻辑

下面是一段经典的示例

python 复制代码
x = 10
if x > 5:
    print("大于5")
    if x > 8:
        print("同时也大于8")
else:
    print("小于等于5")

执行结果

复制代码
大于5
同时也大于8

但如果我们不小心调整了缩进

python 复制代码
x = 10
if x > 5:
    print("大于5")
if x > 8:
    print("同时也大于8")
else:
    print("小于等于5")

这时结果变为

复制代码
大于5
同时也大于8

并且逻辑已经完全不同了:else 不再属于第一个 if。

这就是 Python 缩进的力量------它不仅是格式,更是语法的一部分。


八 小结

  1. Python 使用缩进(而非大括号)来表示代码块。
  2. 每个代码块以冒号 : 开始,随后缩进 4 个空格。
  3. 同一层级的缩进必须一致,否则会报错。
  4. 缩进不仅是格式,更直接影响程序逻辑。
  5. 推荐始终使用空格而非 Tab,并保持良好的代码排版习惯。

在本章中,我们理解了 Python 最独特也最重要的语法特性------缩进与代码块。

相关推荐
geovindu4 分钟前
rust: Facade Pattern
开发语言·后端·设计模式·rust·外观模式
智鸟科技GemeOpen开发者智能设备21 分钟前
平安校园 AI 智能实时告警系统 智鸟科技·GemeOpen + 谷华科技·融合创新方案白皮书
java·开发语言·python·物联网·智能家居
Sand(ContextGate)44 分钟前
Python Agent 测试实战:测试与评估,让 Agent 像传统软件一样可交付
前端·javascript·python·microsoft·ai
颜进强1 小时前
20 · NestJs循环依赖与 forwardRef:容器为什么在环面前会死,"占位再补齐"怎么救
前端·后端·ai编程
颜进强1 小时前
19 · NestJs @Global 落地账:装饰器与 `isGlobal` 参数,各在什么场景上岗
前端·后端·ai编程
空心木偶☜1 小时前
LangChain 概述
python·ai·langchain·ai编程
她的男孩1 小时前
分片上传的大文件人人可下载:文件模块 isPrivate 在合并时被抹成 false,另有 4 个静默坑
java·后端·架构
lie..1 小时前
30天从零开始学AI应用开发(Day 19):项目二完结:RAG 知识库问答系统,把自己攒的资料变成私人顾问
开发语言·人工智能·python
颜进强2 小时前
18 · NestJS动态模块与 forRoot:`imports: [ConfigModule.forRoot({...})]` 到底在 import 什么
前端·后端·ai编程
xn71332 小时前
Personal AI Agent 架构实战:Memory、权限、跨 App 与本地/云端设计
人工智能·后端·agent