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

作者:程序员爱钓鱼日期:2025/10/20

在学习任何编程语言时,我们都会遇到一个问题:**代码的层次结构该怎么表示?**在 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 的缩进规则非常严格。每个代码块必须使用相同数量的空格进行缩进。

具体规则如下

  1. 推荐使用 4 个空格 作为一个缩进层级(官方标准)。
  2. 同一个代码块内的所有语句缩进必须一致。
  3. 缩进不一致会导致 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 个空格
  • ifelse 属于 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 缩进的力量——它不仅是格式,更是语法的一部分。


八 小结

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

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


Python编程实战 · 基础入门篇 | Python的缩进与代码块》 是转载文章,点击查看原文


相关推荐


gRPC Python 详细入门教程(一)
kuan_li_lyg2025/10/19

系列文章目录 目录 系列文章目录 前言 0.1 主要应用场景 0.2 核心优势特性 一、快速入门 1.1 先决条件 1.1.1 gRPC 1.1.2 gRPC 工具 1.2 下载示例代码 1.3 运行一个 gRPC 应用程序 1.4 更新gRPC服务 1.5 生成 gRPC 代码 1.6 更新并运行应用程序 1.6.1 更新服务器 1.6.2 更新客户端 1.6.3 运行! 二、基础教程 2.1 为何选择gRPC? 2.2 示例代码与环境配置 2.3 定


AI无人机助力生态智慧农田倒伏检测与防控,基于最新以注意力为核心的YOLOv12全系列【n/s/m/l/x】参数模型开发构建无人机航拍智慧生态农田场景下稻田作物倒伏智能化检测预警系统
Together_CZ2025/10/17

在广袤的稻田中,农作物的生长状态直接关系到粮食的产量和质量。然而,自然环境的不确定性,如大风等恶劣天气,常常给农作物带来倒伏的风险。倒伏不仅会导致产量下降,还会给后续的机械化收割带来极大的困难,甚至造成严重的浪费。传统的农田作业模式在面对这些问题时显得力不从心,而随着 AI 智能化技术的快速发展,传统农业正迎来一场深刻的变革。 一、传统农田作业的困境 在传统的稻田种植中,农民们依靠丰富的经验和敏锐的观察力来管理农田。然而,面对大面积的农田,人工巡查的方式效率低下,且难以及时发现所有倒伏区域。


【Java Xml】Apache Commons Digester3解析
Lucky_Turtle2025/10/16

文章目录 概述前期准备使用1、简单读取示例2、多个标签读取示例 细节问题addSetNext顺序 参考 概述 官网 写入查看另一篇:https://blog.csdn.net/qq_45742250/article/details/153191615 前期准备 maven <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-digester3 --> <dependency> <gr


elasticsearch-8.12.2集群部署
peng1792025/10/15

一:下载和解压JDK安装包 下载地址:https://mirrors.huaweicloud.com/openjdk/17/openjdk-17_linux-x64_bin.tar.gz 解压:tar -zxvf jdk-17_linux-x64_bin.tar.gz 二:配置JDK环境 编辑/etc/profile文件: vi /etc/profile    JAVA_HOME=/opt/jdk/jdk-17    PATH=$JAVA_HOME/bin:$PATH 保存后执行s


机器人控制基础:步进驱动器的选型总结
start_up_go2025/10/13

目录 一、选型核心维度:先匹配电机,再适配需求 1. 基础匹配:与步进电机参数严格兼容 2. 应用需求导向:确定驱动器性能与功能 3. 功能需求:按需选择保护与辅助功能 4. 环境适应性:匹配使用场景的物理条件 二、选型关键步骤:从参数到落地的 5 步流程 步骤 1:明确步进电机的核心参数 步骤 2:定义应用的核心需求 步骤 3:筛选驱动器的基础参数 步骤 4:验证功能与兼容性 步骤 5:预留余量,避免极限运行 三、选型注意事项:避开常见误区 四、典型场景选型示例


【k8s】基础概念+下载安装教程
_BugMan2025/10/12

目录 k8s提供的核心能力 1. 自动化运维与自愈能力 2. 服务的弹性伸缩 3. 服务发现与负载均衡 4. 发布与回滚 5. 配置与秘钥管理 组件 核心组件 概念组件 扩展组件 下载安装 测试 kubectl命令 k8s提供的核心能力 k8s可以理解为一个 1. 自动化运维与自愈能力 这是 K8S 最吸引人的能力之一。 自动重启:如果容器崩溃,K8S 会自动重启它。 自动替换:如果整个节点(服务器)宕机,K8S 会检测到它上面的容器失效,并在其他


对《DDD本质论》一文的解读
canonical_entropy2025/10/10

在《DDD本质论:从哲学到数学,再到工程实践的完整指南之理论篇》中,我们建立了一套从第一性原理出发的DDD理论体系。由于原文理论密度较高、概念间关系精微,为帮助读者更清晰地把握其思想脉络,我们设计了一项思想实验,并借助AI进行体系梳理与对比。 我们首先向AI提出以下问题: DDD领域驱动设计的概念有哪些?这些概念之间的相互关系是什么。如果要逐一去掉这些概念,你会按照什么顺序,为什么? 换言之,如果从第一性原理出发,如何逐步推导出这些概念的相互关系? 不要把任何技术看作是一个不可切分的整体,任何


tcp服务器
liuy96152025/10/9

🧩 一、总体架构思路 TCP 服务器的基本流程: 创建监听套接字 → 绑定 IP 和端口 → 监听端口 → 接受连接 → 通信收发 → 关闭连接 伪代码框架: int main() { int listen_fd = socket(AF_INET, SOCK_STREAM, 0); // 创建TCP套接字 bind(listen_fd, …); // 绑定地址和端口 listen(listen_fd, SOMAXCONN);


Vue3 EffectScope 源码解析与理解
excel2025/10/7

1. 全局变量与基础类定义 activeEffectScope:表示当前正在运行的 effect 作用域。 EffectScope 类:用来管理一组副作用(ReactiveEffect),提供生命周期控制。 import type { ReactiveEffect } from './effect' import { warn } from './warning' // 当前全局正在运行的作用域 export let activeEffectScope: EffectScope | und


Linus 眼中,编程 AI 的真实价值如何?
飞哥数智谈2025/10/6

今天刷到了一段视频,是 Linux 之父 Linus Torvalds 与 VMware 副总裁兼首席开源官 Dirk Hohndel 的一段对话。 内容挺有意思,分享给大家。 主要有两个话题: AI 只是打了鸡血的自动纠错 AI 幻觉带来了 bug 话题是由 Dirk Hohndel 提出,由 Linus Torvalds 进行回答的。 AI 是打了鸡血的自动纠错 针对这一点,Linus Torvalds 认为这一说法有一定的合理性,但 AI 在编程领域的真正潜力是可以成为一个识别“明显愚

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0