在学习任何编程语言时,我们都会遇到一个问题:**代码的层次结构该怎么表示?**在 C、Java 等语言中,开发者通常用大括号
{}来表示代码块。 但在 Python 中,一切都不同。 Python 没有大括号、没有 begin 和 end,它用一种更自然的方式——缩进,来体现代码逻辑。
这不仅是 Python 的语法规则,更是它优雅、简洁风格的核心体现。
一 为什么 Python 要用缩进
Python 的设计哲学之一是 “代码的可读性至上”。 缩进是一种强制性的格式要求,让程序结构一目了然,不需要额外的标识符。
例如,在其他语言中我们可能会写
1if (x > 0) { 2 printf("x is positive"); 3} else { 4 printf("x is non-positive"); 5} 6
而在 Python 中,则变成了
1if x > 0: 2 print("x is positive") 3else: 4 print("x is non-positive") 5
没有大括号,没有多余符号,仅通过缩进,就能清晰地看出逻辑结构。
二 缩进的基本规则
Python 的缩进规则非常严格。每个代码块必须使用相同数量的空格进行缩进。
具体规则如下
- 推荐使用 4 个空格 作为一个缩进层级(官方标准)。
- 同一个代码块内的所有语句缩进必须一致。
- 缩进不一致会导致
IndentationError(缩进错误)。
例如
1if True: 2 print("正确的缩进") 3 print("继续执行") 4
错误示例
1if True: 2 print("缩进不一致") 3 print("将会报错") 4
运行后会提示
1IndentationError: unexpected indent 2
三 Python 中的代码块
代码块(Code Block) 是指一组属于同一逻辑结构的语句。 在 Python 中,只要语句后面带有 冒号(:),就意味着接下来要写一个新的代码块。
常见的代码块包括
| 语句类型 | 示例 |
|---|---|
| 条件判断 | if / elif / else |
| 循环语句 | for / while |
| 函数定义 | def |
| 类定义 | class |
| 异常处理 | try / except / finally |
示例
1def greet(name): 2 if name: 3 print("Hello,", name) 4 else: 5 print("Hello, stranger") 6
在这里
def greet(name):表示一个函数定义的开始- 紧跟的缩进部分,就是这个函数的代码块
四 缩进的层级结构
缩进不仅区分代码块,还表示逻辑的层级关系。
来看一个例子
1for i in range(3): 2 if i % 2 == 0: 3 print(i, "是偶数") 4 else: 5 print(i, "是奇数") 6print("循环结束") 7
运行结果
10 是偶数 21 是奇数 32 是偶数 4循环结束 5
分析
for下面的所有语句都向右缩进 4 个空格if和else属于for的代码块print("循环结束")没有缩进,代表它已经脱离了for语句的范围
缩进层级就像树的分支,层次越深,逻辑越具体。
五 缩进中的空格与 Tab
Python 对缩进的空格与 Tab 非常敏感。 混用空格和 Tab 会导致难以发现的错误。
推荐做法
- 永远使用 空格缩进(4 个空格)
- 在编辑器中设置自动将 Tab 转为空格
大多数现代 IDE(如 PyCharm、VS Code)都会自动处理缩进,只需在设置中勾选
“将 Tab 转换为空格(Convert tabs to spaces)”
六 空行与逻辑层次
除了缩进,空行 也在 Python 中扮演着重要角色。 空行不会影响代码运行,但能帮助分隔逻辑,使结构更加清晰。
例如
1def add(a, b): 2 return a + b 3 4 5def subtract(a, b): 6 return a - b 7
函数之间的空行让结构更直观,符合 PEP 8(Python 官方编码规范)的要求。
七 实战案例:缩进决定逻辑
下面是一段经典的示例
1x = 10 2if x > 5: 3 print("大于5") 4 if x > 8: 5 print("同时也大于8") 6else: 7 print("小于等于5") 8
执行结果
1大于5 2同时也大于8 3
但如果我们不小心调整了缩进
1x = 10 2if x > 5: 3 print("大于5") 4if x > 8: 5 print("同时也大于8") 6else: 7 print("小于等于5") 8
这时结果变为
1大于5 2同时也大于8 3
并且逻辑已经完全不同了:else 不再属于第一个 if。
这就是 Python 缩进的力量——它不仅是格式,更是语法的一部分。
八 小结
- Python 使用缩进(而非大括号)来表示代码块。
- 每个代码块以冒号
:开始,随后缩进 4 个空格。 - 同一层级的缩进必须一致,否则会报错。
- 缩进不仅是格式,更直接影响程序逻辑。
- 推荐始终使用空格而非 Tab,并保持良好的代码排版习惯。
在本章中,我们理解了 Python 最独特也最重要的语法特性——缩进与代码块。
《Python编程实战 · 基础入门篇 | Python的缩进与代码块》 是转载文章,点击查看原文。
