缩进
左边空几格,用来告诉电脑「谁属于谁」。
它是什么
缩进 就是一行左边空出来的距离。 在 Python 里,它不是装饰。 它就是语法。
很多语言用花括号 {} 把一捆句子包起来。
Python 不这么做。
它看你左边空了几格,来判断谁属于谁。
同一层的句子必须对齐。 往右移一层,表示「我在里面」。 移回来,表示「我又到外面了」。
print("第一")
print("第二")这两行平级。 谁也不属于谁。
名字从哪来
缩进的英文是 indent,意思是「往里缩一截」。 书的段落开头空两格,就是一种缩进。
1966 年,英国计算机科学家彼得·兰丁(Peter Landin)写了一篇著名文章,叫《接下来的 700 种编程语言》。 他提出用左边空白来划分程序块,并给它起名叫 off-side rule。 这个名字借用了足球的越位规则:站到不该站的位置,就不算数。
后来的教学语言 ABC 也用缩进。 Python 的发明人吉多·范罗苏姆参加过 ABC,把这个习惯带了过来。
后来大家约定:一层通常空 4 个空格。 不要空格和 Tab 键混用。
它怎么工作
冒号 : 后面,通常下一行就要缩进。
if、elif、else、for、while、def 都这样。
属于 if 或 for 的句子,要往右移:
if True:
print("我在里面")
print("我在外面")里面那行多空 4 格。 外面那行无论真假都会跑。
嵌套 时再空一层。 两层就是 8 个空格。
for i in range(2):
for j in range(2):
print(i, j)用眼睛看左边齐不齐。 也可以用手指比。
空错了,常见有两种报错:
IndentationError:缩进不合法TabError:空格和 Tab 混在一起了
它们都属于 调试 时要先看的信号。
括号 ()、[]、{} 里面的换行,Python 会稍微宽容一些。
但属于 if / for / 函数身体的那些行,对齐必须认真。
生活里在哪里
- 作文分段:新段落开头空格,表示「这里换一层意思」。
- 提纲:大标题顶格,小标题往里缩,谁属于谁一眼能看出来。
- 队列:同一排对齐,出列的人明显站在另一层。
- 大纲里的项目符号:再缩一层,就是子条目。
在 C、Java、JavaScript 里,花括号说了算,缩进主要给人看。 在 Python 里,缩进同时给人和电脑看。 写整齐,既是礼貌,也是语法。
和相近概念的差别
缩进管的是「属于谁」。 注释 管的是「为什么」。 嵌套 管的是「里面还有一层」。
嵌套一定带来更深的缩进。 但空几格本身不是嵌套的目的,只是记号。
也不要把缩进和空行搞混。 空行是上下隔开,让人好读。 缩进是左右移动,改变结构。
else 对齐谁,就跟谁。
对齐看错,路就走错。
常见误会
误会 1:空格无所谓。
在 Python 里,空格常常就是语法。 缩进错了,程序直接不跑。
误会 2:空 2 格、空 4 格、按一次 Tab,都一样。
一层请固定 4 个空格。 混用最容易变成看不懂的报错。
误会 3:看起来差不多齐就行。
电脑数的是空格个数,不是「好像齐」。 有的行 3 格、有的行 4 格,它不认。
误会 4:缩进了不该缩进的行也没关系。
多空的那行会变成「里面的人」。 条件不成立时,它可能根本不跑。
误会 5:只有 if 需要缩进。
for、while、def,凡是冒号开头的一块,都要缩进。
想知道更多
- 书:潘洪波《小学生 Python 趣味编程》(用对齐的代码块练「谁属于谁」)。
- 书:埃里克·马瑟斯《Python 编程:从入门到实践》(一打开就能看见:同一层代码左边总是齐的)。
未登录时不会保存学习进度