摘要:一开始学习Python的时候我就有一个疑惑:别的编程语言像 C、Java、JavaScript,都是用花括号{ }来表示代码块,为啥 Python 偏偏要用缩进呢?我学习的第一门编程语言是C,刚开始写Python经常忘了缩进,总因为缩进不对报错,说实话真觉得它
[赞] 点赞、收藏、加关注,下次找我不迷路
一开始学习Python的时候我就有一个疑惑:别的编程语言像 C、Java、JavaScript,都是用花括号{ }来表示代码块,为啥 Python 偏偏要用缩进呢?我学习的第一门编程语言是C,刚开始写Python经常忘了缩进,总因为缩进不对报错,说实话真觉得它有点反人类设计了,哈哈~
用了这么多年Python,对于缩进这个事我也有了一些思考,其实 Python 选择缩进代替花括号,背后藏着很多巧妙的设计思路,搞懂这些,你不仅能理解这种语法的好处,还能更深地体会 Python 的语言哲学。
从表格里能明显看出,除了 Python,其他语言都是靠花括号把代码块 “框” 起来。而 Python 呢,直接通过缩进的层级来表示代码的从属关系。比如在if语句后面,冒号一跟,下面缩进的代码就属于这个条件块,缩进取消,代码块也就结束了。
可能有人会问:用花括号不是挺清楚的吗?为啥非得换个方式呢?这就得说到 Python 的设计理念了。
Python 的发明人 Guido van Rossum 在设计这门语言时,一直秉持着一个重要原则:让代码更易读,让开发者更专注于逻辑本身。花括号虽然能明确代码块,但也带来了一些问题:
你看一段用花括号的代码,里面密密麻麻全是{ },尤其是多层嵌套的时候,像这样:
if (condition1) {if (condition2) {if (condition3) {// 这里面的代码}}}这么多层花括号,你得一个个配对,稍不留神就看错层级。而 Python 用缩进,代码的层级结构一目了然:
if condition1:if condition2:if condition3:# 这里面的代码不用看括号,只看缩进的空格,就能清楚知道每段代码属于哪个层级,视觉上更简洁,读起来更顺畅。
在其他语言里,花括号的使用方式可以很随意,有人喜欢把左花括号跟在条件后面,有人喜欢另起一行,比如:
// 写法一if (condition){code;}// 写法二if (condition) {code;}虽然功能一样,但代码风格不统一,团队协作时看着就很别扭。而 Python 呢,强制要求缩进必须正确,要么用 4 个空格,要么用 Tab 键(但一般推荐 4 个空格)。这样不管谁写的代码,格式都是统一的,大大减少了因为格式问题引发的误会和错误。
写过 C++ 或者 JavaScript 的朋友肯定遇到过这种情况:代码写着写着,发现括号没配对,报错了,然后花半天时间找到底少了个左括号还是右括号。尤其是代码量很大的时候,找括号简直让人抓狂。
Python 就不存在这个问题,它通过缩进自动判断代码块的开始和结束,你不用操心括号有没有配对,只要缩进对了,代码结构就对了。这对于新手来说特别友好,不用在括号上浪费精力,能更专注于逻辑实现。
刚才说的都是设计层面的理念,那在实际写代码的时候,缩进到底有啥好处呢?咱来举几个具体的例子。
比如写一个判断年龄是否成年的程序,用 Python 写是这样的:
age = 18if age >= 18:print("你是成年人")else:print("你是未成年人")代码块通过缩进区分,一眼就能看出print语句属于哪个条件。要是用 JavaScript 写,就得加上花括号:
let age = 18;if (age >= 18) {console.log("你是成年人");} else {console.log("你是未成年人");}虽然也不难,但多了花括号,代码就显得啰嗦了点。尤其是当条件块里只有一行代码时,Python 不用加花括号,直接缩进就行,而其他语言就算只有一行,也得把花括号写上,不然就会报错。比如 JavaScript 里这样写就错了:
// 错误写法,会报错if (age >= 18)console.log("你是成年人");elseconsole.log("你是未成年人");而 Python 不管多少行,都是靠缩进,写法更灵活简洁。
再看循环,比如打印 1 到 10 的数字,Python 是这样:
for i in range(1, 11):print(i)缩进的print(i)就是循环体里的代码。要是用 C 语言,就得这样:
for (int i = 1; i同样,花括号把循环体括起来,但 Python 的缩进让循环体更突出,不用在括号里找代码。
在定义函数和类的时候,Python 的缩进优势也很明显。比如定义一个计算平方的函数:
def square(x):return x ** 2缩进的return语句属于函数体。而在 Java 里,得这样写:
public int square(int x) {return x * x;}花括号又出现了,虽然 Java 的语法更严谨,但 Python 的写法确实更简洁,少了很多 “仪式感”,让开发者能更快地写出核心代码。
刚开始学 Python 的朋友,肯定会因为缩进问题报错,比如IndentationError,心里可能觉得这规定太严格了,不如花括号灵活。其实啊,只要掌握这几点,缩进就很好处理:
别混用空格和 Tab 键,虽然 Python 允许 Tab 键,但推荐用 4 个空格,因为不同的编辑器对 Tab 键的解释可能不一样,有的认为是 4 个空格,有的认为是 8 个,混用容易出问题。现在的代码编辑器,比如 VS Code、PyCharm,都有自动缩进功能,你只要敲完冒号按回车,编辑器会自动给你缩进,根本不用手动敲空格。
比如在if语句里,下面缩进一层的代码属于这个if块,再缩进一层就属于里面的子块。取消缩进,就表示当前代码块结束。举个例子:
if condition1:print("condition1成立")if condition2:print("condition2也成立")print("不管条件如何,我都会执行")这里第一个print缩进一层,属于if condition1块;第二个print缩进两层,属于里面的if condition2块;最后一个print没有缩进,不属于任何条件块,所以不管条件是否成立,都会执行。
要是缩进错了,Python 会报错,并且告诉你哪一行缩进有问题,比如:
File "test.py", line 3print("错误缩进")^IndentationError: expected an indented block after 'if' statement in line 2根据提示调整缩进就行,多写几次就习惯了。
说了这么多,咱们来总结一下 Python 为啥用缩进而不是花括号:
可读性优先:缩进让代码结构一目了然,减少视觉噪音,更符合人类阅读习惯。强制格式统一:避免不同开发者代码风格混乱,团队协作更顺畅。简化编程逻辑:不用操心括号匹配,专注于代码逻辑本身,尤其对新手更友好。简洁即美:Python 追求 “优雅、明确、简单”,缩进正是这种理念的体现。可能有人会说,其他语言也有缩进规范啊,比如 Java 也提倡缩进,但那是 “建议”,不是 “强制”。而 Python 把缩进变成了语法的一部分,用强制的方式保证代码的整洁和可读性。这一开始可能让新手不适应,但适应之后就会发现,这种设计真的很巧妙,能让你写代码时更专注,读代码时更轻松。
所以,别再纠结 Python 为啥不用花括号了,试着接受这种设计,你会发现它的好。当你写 Python 代码时,不用再为要不要加花括号、括号有没有配对而烦恼,只要关注逻辑本身就行。这就是 Python 的魅力,用简单的方式解决复杂的问题,让编程变得更高效、更愉快。
来源:璐说科技