Python 简明教程

Python - Syntax Errors

Python Syntax Errors

在 Python 中,语法错误是最常见的程序员错误,特别是刚接触这门语言的程序员。本教程将帮助你理解什么是语法错误,如何识别语法错误以及如何修复它们。

What is a Syntax Error?

Python(或任何编程语言)中的语法错误是在代码不遵循该语言的语法规则时发生的错误。语法错误在解析代码时由解释器或编译器检测,并且会阻止代码被执行。

发生这些错误的原因是编写的代码不符合 Python 的语法规则,导致解释器无法理解和执行这些命令。

Common Causes of Syntax Errors

以下是语法错误的常见原因 −

# Error: Missing colon (:) after the if statement
if True
   print("This will cause a syntax error")
# Error: The print statement is not correctly indented
def example_function():
print("This will cause a syntax error")
# Error: 'print' is misspelled as 'prnt'
prnt("Hello, World!")
# Error: The closing parenthesis is missing.
print("This will cause a syntax error"

How to Identify Syntax Errors

有时识别 Python 的语法错误很容易,尤其是在你可以从解释器那里获得清晰的错误信息时。然而,在其他时候,识别错误可能有些棘手。以下提供几种方法,可以帮助你有效识别并解决语法错误 −

Reading Error Messages

运行 Python 脚本时,如果解释器遇到语法错误,它将停止执行并显示错误消息。因此理解如何读取这些错误消息非常重要。

Example Error Message

File "script.py", line 1
   print("Hello, World!"
                        ^
SyntaxError: EOL while scanning string literal

该错误消息可分解为以下几部分 −

  1. File "script.py": 指出错误发生的文件。

  2. line 1: 指出解释器检测到错误的文件中的行号。

  3. print("Hello, World!": 显示带有错误的代码行。

  4. ^: 指出检测到错误的代码行的具体位置。

Using an Integrated Development Environment (IDE)

IDE 有助于识别语法错误,因为它们通常会提供实时反馈。以下是一些有助于识别语法错误的 IDE 功能 −

  1. Syntax Highlighting: IDE 会用不同的颜色突出显示代码语法。如果代码的某一部分颜色不正确,这可能表示语法有误。

  2. Linting: pylint 或 flake8 等工具会检查代码是否存在错误和风格问题。

  3. Error Underlining: 许多 IDE 会用红色波浪下划线标记语法错误。

  4. Tooltips and Error Messages: 将鼠标悬停在出现下划线的代码上通常会提供包含错误说明的工具提示。

具有这些功能的流行 IDE 包括 PyCharm、Visual Studio Code 和 Jupyter Notebook。

Running Code in Small Chunks

如果您有一个较大的脚本,那么以较小的片段运行代码可能很有用。这样可以帮助找出导致语法错误的代码部分。

例如,如果您有一个带有多个函数的脚本,并且遇到了语法错误,请尝试独立运行每个函数以缩小错误发生位置的范围。

Using Version Control

Git 等版本控制系统可以帮助您跟踪代码中的更改。如果您遇到语法错误,您可以将当前版本的代码与以前的版本进行比较,以查看哪些更改可能导致了该错误。

Fixing Syntax Errors

修复 Python 中的语法错误涉及了解解释器提供的错误消息,识别代码中的确切问题,然后进行必要的更正。以下是有关如何系统地处理和修复语法错误的详细指南 −

Read the Error Message Carefully

Python 的错误消息非常具有信息性。它们指出了文件名、行号和语法错误类型 −

Example Error Message

假设我们编写的 print 语句如下 −

print("Hello, World!"

以下消息表明第 1 行存在语法错误,表明代码中某个位置的括号未闭合,导致语法错误。

File "/home/cg/root/66634a37734ad/main.py", line 1
    print("Hello, World!"
         ^
SyntaxError: '(' was never closed

若要修复此错误,你需要确保每个左括号都有与之相对应的右括号。以下是已更正的代码: -

print("Hello, World!")

Locate the Error

若要找到错误,你需要转到错误消息中提到的行号。此外,不仅要检查指定的行,还要检查周围的行,因为有时问题可能源自前几行。

Understand the Nature of the Error

若要理解错误的本质,你需要确定它是哪种类型的语法错误(例如,缺少括号、缩进不正确、缺少冒号等)。另外,请参阅常见的语法错误及其模式。

Correct the Syntax

基于错误类型修复代码。