语法与缩进
注释、缩进块、第一行代码。
语法与缩进
这一课你将能做到
- 写一个包含注释、多级缩进、多种语句的完整脚本并一次跑通
- 看到缩进类报错(IndentationError / TabError)时,30 秒内定位并修复
- 说清 Python 为什么用缩进代替大括号,以及「冒号 + 4 空格」这套规则的完整口径
为什么要学
Java 用 {} 圈代码块,分号结尾;Python 把这两样都省了,改用缩进表示「谁属于谁」。好处是代码天生整齐、不会出现垃圾格式;代价是缩进不是风格问题,是语法问题——多打一个空格,程序直接报错。这一课不解决缩进,后面每一课都会被它绊住。
人话:缩进就像 Word 里的层级列表——一级标题下的内容都缩进一格,表示「这些属于这个标题」。Python 里 if、for、def 后面跟个冒号,下一行开始缩进的代码都「属于」它,缩进结束,代码块就结束。
先建立图像
同一段逻辑,Java 与 Python 对照:
// Java:花括号定边界,缩进只是好看
if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
# Python:缩进就是边界本身
if score >= 60:
print("及格")
else:
print("不及格")
结构图:
if score >= 60: ← 冒号:声明「下面是我的代码块」
print("及格") ← 4 空格缩进:属于 if
print("继续加油") ← 同样 4 空格:和上面同属 if
print("程序结束") ← 顶格:不属于 if,无论如何都执行
跟着做
步骤 1:写第一个带缩进的脚本
新建 indent_demo.py:
score = 85
if score >= 90:
print("优秀")
print("继续保持") # 这行与上一行同属 if
elif score >= 60:
print("及格")
else:
print("不及格")
print("程序执行完毕") # 顶格,不属于任何块
运行:
python indent_demo.py
输出:
及格
程序执行完毕
三个观察点:elif 是 else if 的缩写;每个分支都以冒号结尾;print("程序执行完毕") 顶格,所以不属于任何分支,必然执行。
步骤 2:亲手制造一次 IndentationError
把上面文件里 print("及格") 前面多加 2 个空格(变成 6 个空格),保存再跑:
python indent_demo.py
输出:
File "indent_demo.py", line 8
print("及格")
IndentationError: unexpected indent
这就是「缩进不一致」的报错。改回 4 个空格,恢复正常。记住这个报错的样子,以后见到它,第一反应就是「查缩进」。
步骤 3:缩进层级可以嵌套
缩进里还能再缩进,每层都是 4 空格:
students = ["阿黄", "阿绿", "阿蓝"]
for name in students:
if name == "阿绿":
print(f"{name}:请假") # 两层缩进:for 里嵌 if
else:
print(f"{name}:出勤")