Python PyLint 模块

2025年3月17日 | 阅读13分钟

编程这个词总是伴随着“错误”这个词,因为我们在编码过程中遇到错误是非常普遍的。错误对于所有程序员来说都很常见,不仅仅是初学者。即使是多年编程经验的程序员也容易在他们的程序中遇到这些错误。错误是编程不可或缺的一部分。但这并不意味着我们遇到程序中的任何错误都不需要采取行动。错误有多种类型,所有这些类型都会导致程序功能不正常。错误是我们期望从特定程序中获得的预期输出的障碍。因此,我们也应该记住,学习解决错误的方法也是学习编程的一部分。我们需要学习多种方法、途径和函数,当我们的程序遇到错误时可以使用它们。此外,在当今互联互通的世界里,我们还需要面对的另一个主要问题是理解他人的程序。有很多情况下,我们需要处理他人的程序,那时,如果我们遇到任何错误,就会很难解决这些错误。这甚至更困难,因为首先,我们需要理解他人程序的运行方式,以及该程序如何根据其中给定的逻辑和函数来工作。只有在那之后,我们才有可能理解错误是从程序的哪个部分发生的。

今天,当我们遇到别人程序中的错误时(有时也为自己写的程序),我们中的大多数人都会上网搜索。当我们无法理解程序是如何工作的,或者程序的逻辑和流程是什么时,这可能是一个好方法。但这个问题也伴随着一个问题,那就是很多错误在网上找不到,然后,我们又必须回到程序本身来理解它的逻辑。在许多情况下,这是正确的,因为我们写的代码或具有类似逻辑的程序不可能都发布在网上。因此,作为程序员,我们也有责任以一种可读且易于理解的方式编写我们的代码,以便任何将要使用这个程序的人都能理解。许多编程语言提供了多种包和库来解决我们在编码过程中可能遇到的所有这些问题。通过使用这些包,我们可以轻松地找到我们程序中所有这些错误和问题。如果我们专门谈论 Python,它也为我们提供了多个包,我们可以在 Python 程序内部或与之一起使用,以查找给定程序中所有这些错误和问题。Python 提供的模块之一是 pylint 模块,我们可以将其用于给定的 Python 程序来查找错误和问题。因此,在本教程中,我们将学习 Python 的 pylint 模块,并了解如何使用该模块来查找给定 Python 程序中的错误和问题。

Python PyLint 模块简介

PyLint 是一个 Python 程序,其开发目的是为了解决我们在处理他人 Python 程序时遇到的常见问题。该模块与其他 Python 程序检查模块非常相似,例如 mypy、flake8、pyflakes 和 pychecker。当我们开始处理他人编写的程序时,可能会出现各种各样的问题,我们所有人过去肯定都遇到过很多。我们在处理他人程序时遇到的一些常见问题包括代码的文档字符串、程序中没有注释、没有解释性内容、程序格式等。Python 的 pylint 模块旨在通过使用此模块执行程序来解决所有这些问题。pylint 模块是一个命令行模块,我们可以在系统的命令提示符 shell 中使用它。pylint 模块在通过此模块在终端 shell 中执行程序时会提供程序的得分。如果程序的得分太低,则意味着程序需要改进,因此,执行后,该模块还会提供建议。这些建议主要集中在如何提高程序的得分,它们还显示了给定程序的可读性程度。

PyLint 模块的功能

pylint 模块更多地作为一个工具而不是一个 Python 模块来工作。以下是一些常见的描述,它们向我们说明了 pylint 模块作为工具的工作方式:

  • 当我们在终端 shell 中使用 pylint 模块执行 Python 程序时,它会列出程序中我们在 Python IDE 中运行该程序时可能遇到的所有错误。
  • 该模块建议如何更新程序中的某些特定块,以提高程序的可读性和理解性。
  • 该模块会查找程序中的“代码异味”,从而迫使用户在给定的程序中强制执行编码标准。
  • 除了上述功能外,pylint 模块还对给定程序的复杂性进行了详细的检查。

Python PyLint 模块:安装

pylint 模块非常易于使用,但在我们开始使用该模块之前,我们必须首先确保该模块已安装在我们的系统中。这是因为 pylint 模块不是 Python 的内置模块,这意味着它不会随 Python 源安装一起安装。因此,如果 pylint 模块未安装在我们的系统中,我们就必须通过执行该模块的安装过程来安装它。我们可以使用多种方法来安装 pylint 模块,但使用 pip 安装程序安装此模块不仅简单而且非常容易。因此,在本教程的安装部分,我们将使用 pip 安装方法在我们的机器上安装 pylint 模块。我们也可以在命令提示符 shell 中指定要安装 pylint 模块的目录,但建议将此模块安装在默认目录中。

要使用 pip 安装方法安装 pylint 模块,首先,我们必须打开系统的命令提示符 shell,然后在其中输入以下命令:

在输入上述 pip 命令后,我们可以通过按“enter”键来发出开始安装过程的命令,它将开始此模块的安装过程。一旦安装过程开始,我们就必须等待一段时间,因为该模块带有多个预嵌入的依赖项,下载所有这些依赖项将需要时间。

Python PyLint Module

正如我们所见,现在我们的终端 shell 屏幕上显示了“成功安装”消息,这意味着 pylint 模块已成功安装。我们也可以通过在命令提示符 shell 中检查此模块的版本来验证这一点,或者在我们开始使用此模块执行代码时会自动验证。

注意:如果运行给定的 pip 命令后显示“要求已满足”,则表示此 pylint 模块已安装在我们的系统中,我们可以直接开始使用它。

Python PyLint 模块:实现

为了开始使用此 pylint 模块,我们必须首先编写一些示例程序,然后我们将使用此模块在终端 shell 中执行这些程序。当我们将程序与此模块一起执行时,程序中存在的任何错误或问题都会显示在命令提示符终端的屏幕上,就像其他模块中的输出一样。因此,我们将编写非常基本和简单的程序,以便我们能更好地理解此模块的工作原理和功能。

首先,我们必须将以下示例程序编写到一个 Python 脚本中:

一旦我们按照上述方式编写了示例程序,我们就必须将此 Python 脚本保存为名为“code.py”的文件,并将其保存在安装了 pylint 模块的同一目录中;否则,我们将无法使用 pylint 模块执行此程序。

现在,我们必须打开系统的命令提示符 shell 并输入以下命令,以便我们可以使用 pylint 模块执行示例程序:

当我们按“enter”键时,pylint 模块将执行给定的示例程序,结果将显示在屏幕上,如下所示:

Python PyLint Module

如果我们仔细观察程序的得分,我们会发现程序的得分非常低。但这里我们还应该牢记一点,低的执行得分并不总是意味着给定的程序是错误的。就我们保存在“code.py”中的特定程序而言,该程序的得分也非常低(1.67/10)。有很多时候我们甚至可以看到程序的得分是负数。但这一切并不意味着程序包含错误,就像我们在示例程序中所见的那样。当我们在一台 Python IDE 上运行示例程序时,它不会产生任何错误,并且会成功产生预期的输出结果。那么,我们示例程序的低得分意味着什么,以及我们可以做些什么来提高这个得分?

首先,我们需要理解,当我们使用 pylint 模块运行示例程序后看到的得分是程序清晰度的指标。得分表明,如果其他人阅读该程序,他们将有多难理解这个示例程序。程序的低得分表明程序对他人来说非常不清晰,而程序的高得分表明程序非常清晰且符合常规。除了得分之外,pylint 模块还为我们提供了多个建议,我们可以将其实现并用于我们的程序中,以提高其清晰度和得分。命令提示符 shell 中的程序报告可以被认为是程序的完整分析,它将帮助我们减少程序中的错误并理解他人的程序。分析报告中提供的每个消息,或者我们可以称之为建议,都基于程序中的样式、约定和流畅性。

任何程序中的不同类型问题都由分析报告中的不同消息指示。正如我们在示例程序的分析报告中所见,程序中存在一些带有不同 ID 和字母的建议。这些 ID 和字母用于指示对用户不同的建议类型。例如,如果代码中的某一行包含错误,它将显示一个不同的建议 ID;当某一行代码包含复杂性时,它将由一个不同的建议 ID 表示。因此,了解这些建议 ID 对我们来说非常重要,以便我们能够轻松地解释它们并根据这些建议对我们的程序进行更改。正如我们将发现的那样,分析报告中给出的每个建议 ID 都以一个字母开头,其余部分是 ID 中的数字。建议中的字母是指消息对象的不同类型。同时,字母后面的数字提供了关于建议类型和程序所需改进类型的详细信息。以下是我们使用 pylint 模块运行 Python 程序后,在结果分析报告中看到的有关不同建议 ID 的描述:

序号消息关键字字母的扩展对象形式建议对象的解释
1C约定当我们的程序不遵循编写代码的标准规则以使其易于所有人理解时,我们会在结果分析报告中看到建议 ID 以字母 C 开头。
2EError当该程序中的特定行包含某种错误,并且该错误将导致程序成功执行出现问题时,我们程序的结果分析报告中的建议 ID 将以“E”消息对象开头。
3F致命当程序包含阻碍 pylint 模块进一步执行程序的错误类型时,我们程序的结果分析报告中的建议 ID 将以“F”消息对象开头。
4R重构建议 ID 的“R”字母对象显示在我们程序的“结果分析报告”中,用于指示“不良代码异味”。
5W警告当我们程序的结果分析报告中的建议 ID 以“W”消息对象开头时,表示给定代码行中存在与 Python 相关的特定问题。

这些是 5 种问题特定的消息对象,当我们使用 pylint 模块在终端 shell 中运行程序时,可以在结果分析报告中看到的建议 ID 中找到。

当我们在使用 pylint 模块运行 Python 程序时,有一些建议 ID 经常出现。一旦我们理解了这些建议 ID,就能更容易地提高我们程序的得分,并使其对他人更加清晰。我们也可以在处理他人代码时使用这些技术或建议,这样我们就能更容易地理解给定的复杂程序。以下是一些常见的建议 ID 及其解释,以便我们能更好地理解它们:

(i) 建议 ID C0326:当我们在代码的那一行中出现了不良的空格错误时,此建议 ID 出现在报告分析中。这意味着我们必须在变量名和“=”号之间留一个空格,而我们实际上并没有提供。此规则或建议适用于我们在程序中使用的所有变量声明,其中操作符紧跟在标识符后面。

(ii) 建议 ID C0304:当我们在程序中遗漏了一行时,此建议 ID 出现在结果分析中。这意味着此消息对象建议我们必须在程序中添加一个空行,以使其看起来更清晰、更易于所有人理解。当此建议 ID 出现在我们程序的“结果分析报告”中时,我们必须在程序末尾添加一个空行。

(iii) 建议 ID C0114:当我们在程序的“结果分析报告”中出现文档字符串错误时,此建议 ID 会出现。显示此消息对象意味着我们的程序中存在“缺少模块文档字符串”问题。我们可以通过在程序开头或顶部添加文档字符串来解决此问题。此文档字符串将指明我们的程序设计的目的以及程序的逻辑。这不仅有助于提高程序的得分,还可以使程序易于理解。

(iv) 建议 ID C0103:如果此建议 ID 或消息对象与我们代码中的任何一行一起出现在“结果分析报告”中,则意味着我们有一个无效名称错误。无效名称错误建议 ID 表明我们在程序中使用的变量或标识符名称无效或不遵循正确的编码约定。这通常发生在我们将变量或标识符名称写成以小写字母开头时。我们可以通过定义程序中每个变量或标识符的名称,以大写字母开头来纠正此问题。

注意:但实际上人们认为,我们在 Python 程序中使用的类名应该使用 CamelCasing(驼峰式命名)写法,这意味着类名以大写字母开头。如果我们想避免在我们的程序“结果分析报告”中显示最后一种消息对象或建议 ID,我们将不得不向 pylint 模块添加一个正则表达式。因为 pylint 模块实际上可以接受我们程序中的这个正则表达式,即变量名中的字母是小写形式。

以上就是 pylint 模块的一些常见建议 ID,它们有助于提高我们程序的得分并降低其复杂性。我们将使用这些建议 ID 的解释来更好地处理他人的程序并理解它们。现在,我们将使用这些消息对象的解释来提高我们在实现部分使用的示例程序的得分。我们将根据使用 pylint 模块执行我们的程序时,“结果分析报告”中显示的建议 ID 来修改我们的示例程序。请看以下修改后的程序,我们根据 pylint 模块提供的建议进行了更改:

让我们先用 Python 运行这个示例程序,检查它是否没有错误。当我们用 Python IDE 运行这个程序时,它将在输出中产生以下结果:

The Addition of Two Numbers Given in the Example Program: 26

正如我们所见,程序显示了不带错误的输出,这意味着我们的示例程序没有错误。现在,我们将使用 pylint 模块在终端 shell 中运行此程序,以检查其得分。当我们使用系统的命令提示符 shell 中的 pylint 模块执行程序时,请查看此示例程序的以下“结果分析报告”:

Python PyLint Module

正如我们所见,我们程序的得分大大提高,这意味着我们的程序比以前更清晰了。这就是我们可以根据“结果分析报告”中给出的建议 ID 来修改或更改我们的 Python 程序。

结论

本文讨论了 Python 的 pylint 模块、其安装过程及其实现。该模块有助于我们处理他人复杂的 Python 程序。我们可以使用 Python 的 pylint 模块使我们的程序没有错误,并使其更易于理解。当我们发现他人的程序复杂且难以理解时,也可以以同样的方式使用此模块。