python的强制缩进来源于 ABC,是说讲 Python 语法的历史来源。
1. 什么是强制缩进
C、Java 使用大括号 { }划分代码块;Python不用大括号,靠行开头的空格(缩进)来区分代码属于哪一个 if/for/ 函数内部。
缩进不只是排版好看,是语法的一部分,缩进错直接报 IndentationError 程序跑不了,这就叫强制缩进。
if True: print("要缩进") # 缩进,属于if内部print("不缩进") # 不属于if
age = 18if age >= 18: print("成年了") # 缩进,属于if内部,条件成立才执行 print("可以参加投票") # 同样属于if,和上一行保持相同缩进print("程序结束") # 没有缩进,不属于if,无论条件真假一定执行
如果缩进不对,
if True:print("要缩进") # 缩进,属于if内部print("不缩进") # 不属于if
运行就会报错。
>>> %Run -c $EDITOR_CONTENTTraceback (most recent call last): File "<string>", line 2 print("要缩进") # 缩进,属于if内部 ^^^^^IndentationError: expected an indented block after 'if' statement on line 1
2.ABC 是什么
ABC:80 年代荷兰 CWI 研究所开发的一门教学编程语言,Python 之父 Guido 曾经参与 ABC 的开发工作。ABC 语言就已经实现:不用大括号,用缩进代表代码块边界,也就是强制缩进语法。
Guido 本人明确说过:Python 的强制缩进思想,是从 ABC 语言继承过来的,不是自己凭空发明的。
强制缩进来源于 ABC = Python 这种 “缩进决定代码结构、缩进错就报错” 的语法,最早来自老式教学语言 ABC,Python 借鉴继承了这个设计。
ABC 语言本身没能流行,但它的强制缩进、列表字典这类容器被 Python 继承下来了。