Python 中的缩进错误

2025年03月17日 | 阅读 9 分钟

在理解 Python 的缩进问题之前,让我们先简要了解一下 Python 编程语言。

是什么让 Python 与其他编程语言不同?

Indentation Error in Python
  • Python 是一种解释型、高级和面向对象的编程语言,具有动态语义。
  • 它具有非常简单的语法,与其它编程语言相比,实现起来非常容易。
  • 使用 Python,程序员可以专注于逻辑构建,而不是记住语法或在编程中实现逻辑时遇到问题。
  • 它是一种动态、智能的高级语言,并且被广泛的用户所使用。
  • 我们将 Python 编程语言的语法与其他编程语言进行比较,如 C、C++、Java 等许多遵循特定语法的语言。对于每个代码块,都有开始和结束的大括号。
  • 但在 Python 中,我们将遵循正确的缩进规则。
  • 缩进是指在开始某个代码块时,正确使用空格。
  • 它并不太复杂,也不过分关注语法。
  • 它比其他编程语言更快、更高效。
  • Python 代码易于实现、易于编写、易于执行。

现在让我们讨论 Python 中的缩进概念。

Python 编程语言中的缩进是什么?

Indentation Error in Python
  • 缩进是指在 Python 编程语言中开始任何语句、方法和代码块时,正确使用空格和制表符
  • 由于这些缩进,我们可以轻松地识别出任何条件循环、函数、if-else 语句等的开始点和结束点。
  • 如果我们观察 C、C++ 和 Java 等其他编程语言。在这种情况下,使用小括号和花括号以及分号来指定特定代码块和识别特定语句。
  • 但在 Python 中,我们不关心在语法中使用分号和不同的括号。
  • C 语言中的空格没有重要性。其他编程语言或编译器会在词法分析阶段本身忽略所有空格和注释,在起始阶段;因此,它不会生成语法错误。
  • 所有空格的作用都很重要;如果一个代码块是通过应用空格开始的,那么它必须在相同的缩进处结束。
  • 所有语句必须具有相同数量的空格或制表符,以便屏幕左侧的距离属于同一个代码块。如果一个块需要更深层嵌套,则会进一步向右缩进。
  • 如果我们观察 Python 编程语言。在这种情况下,没有 main 函数的概念,就像我们将其与其他编程语言进行比较一样。它们都有 main 函数的概念,该函数在其他函数执行后执行。如果 main 函数调用其他函数,指针将指向执行其他函数并再次返回到 main 函数。
  • 由于缩进,可以确定初始缩进块是 main 函数的主体。如果存在其他函数,则初始缩进块将调用该函数。附加函数的缩进也与主函数不同,以便编译器可以区分主函数和派生函数的块。

Python 编程语言中使用的一些基本缩进规则

  • 对于特定的代码块,在开始和结束任何代码块时都必须保持正确的缩进。
  • 程序员可以使用反斜杠将缩进分成多行。
  • 如果任何块没有正确维护缩进,Python 编译器将抛出缩进错误。
  • 对于程序员来说,始终如一地遵循缩进规则可能会很令人困惑,如果代码太长或包含大量代码行。
  • 但是,缩进有助于我们使用简单的语法实现代码,而不是像我们在其他编程语言中那样为每个代码块应用括号。
  • 它不仅对我们来说很容易,而且节省了我们的时间并减少了代码行数;因此,最终速度会提高,执行时间会缩短。
  • 特定代码块的空格数量已经固定。如果我们使用嵌套的条件语句,那么空格的数量会根据子子语句的规则而增加。

Python 中的缩进错误是如何发生的?

如果我们根据某些逻辑编写一定行数的代码以获得所需的结果,但在此过程中,我们遵循了上述缩进规则。编译器将生成缩进错误。

让我们通过一个例子来理解 -

Indentation Error in Python

在上图中,如果注意到,它已经说明了 Python 如何识别每个代码块。

正如我们在此图中注意到的,每个块的缩进都是从左角到语句开始的空格计算。每当代码块开始时,它都会遵循缩进。首先,它将保持正确的空格和制表符,直到块开始并直到结束。如果在此块内部包含一个嵌套块,它将为其分配空格直到该嵌套块结束。

就这样,在 Python 编程语言中,一个块的缩进就匹配了。

当特定块没有结束,或者用于开始代码块的空格数量不一致时,就会发生缩进错误。同时,块结束,最终会发生缩进错误。

以上图片的描述 -

  • 在上图中,将执行语句一。然后,指针将指向“if 语句”并检查条件;如果条件为真,它将进入块并进入嵌套的 if-else 块。
  • 再次在嵌套的 if 语句中,它将检查条件,如果为真,则执行下一条语句。
  • 就这样,语句的执行将继续进行,现在;如果我们考虑一个块失败的情况,它将不会进入嵌套的 if-else 块。它将直接退出所有块,并执行最终的语句,该语句与块 1(初始块)匹配。

现在让我们看看有缩进错误的图片 -

Indentation Error in Python

上述图片显然存在缩进错误,因为块 2 的缩进与开始和结束点的空格不匹配。块 2 的开始包含 0 个空格,但在结束时,它包含 2 个空格,这将产生错误。

现在出现一个疑问,如果块 3 下方的块 2 可以充当块 4 的嵌套块,那么它不会产生缩进错误,那么这个疑问的答案是“否”,因为块 4;块 3 下方的嵌套块将比块 3 有更多的空格。毕竟,它是嵌套在块 3 里面的。第二个原因是 Python 解释器会找到块 2 的结束,但它无法检测到块 2 的匹配空格;因此它会产生缩进错误。

如何修复 Python 编程语言中的缩进错误?

在修复缩进错误时,您需要记住一些要点。

正如我们之前看到的,缩进错误仅由于不匹配的空格和制表符而发生;因此,我们需要修复所有空格制表符

  • 首先,您需要找到特定代码行中的错误。
  • 之后,检查该行中的空格数量,并检测该行所属的代码块。
  • 通过计算开始和结束该块时使用的空格数量,匹配该块的缩进与该块的开始和结束点。
  • 如果错误仍未解决,请通过使用相同的方式计算其中使用的空格和制表符,将每个代码块的缩进与其他相应的代码块进行匹配。
  • 另外,您可以借助您正在使用的编辑器来检查使用的空格和制表符的数量,并且可以通过查找不必要的空格轻松从中检测出来。

Python 缩进的优点

  • Python 使用缩进来表示特定的代码块,而在其他编程语言中,它们引用各种括号。由于缩进,代码看起来更高效、结构更美观。
  • Python 编程语言使用的缩进规则非常简单;即使是程序员也希望他们的代码易于阅读。
  • 此外,缩进通过精美的结构化提高了代码的效率和可读性。

Python 缩进的缺点

  • 由于缩进中使用空格,当有很多代码行时,修复缩进错误有时会非常困难。
  • C、C++、Java 等各种流行的编程语言使用大括号进行缩进,因此来自发达世界的任何人发现很难适应使用空格进行缩进的想法。

Python 缩进错误的示例

示例 1

上述程序的输出

IndentationError: expected an indented block 

示例 2

上述程序的输出

IndentationError: expected an indented block    

示例 3

上述程序的输出

 IndentationError: expected an indented block   

现在修复上面 Python 程序示例中的缩进错误。

示例 1

上述程序的输出

Indentation Error in Python

示例 2

上述程序的输出

Indentation Error in Python

示例 3

上述程序的输出

Indentation Error in Python