代码质量辅助提示与技巧,或如何让您的代码看起来更漂亮?
本教程的内容
本教程旨在通过使用 PyCharm 的代码智能功能,逐步引导您在 Python 项目中创建源代码。 您将看到 PyCharm 如何帮助保持您的源代码完美无缺,包括正确的缩进、空格、导入等。 ——实际上,您会发现 PyCharm 本身就是一个代码质量工具。
Python 编程不在本教程的范围内。 有关 Python 语言的更多信息,请参阅 官方网站。
在开始之前
确保:
突出显示代码样式违规
创建一个新的 Python 文件 src/Solver.py Alt+Insert。 创建的文件会立即打开以供编辑。 默认情况下,该文件没有内容——这是因为文件 Solver.py 是由 文件模板创建的(对于 Python 文件来说),其中没有任何内容。
接下来,开始键入关键字 class。 当您刚开始键入时,PyCharm 会立即显示建议列表以完成您的代码:

红色曲线标记了下一个预期的条目——在这种情况下,这是预期的标识符。 输入类名 Solver。 红色曲线移动到类名之后。 如果您将鼠标悬停在此曲线上,您会看到错误描述(“:”预期)。 此外,请注意右侧边栏中的红色错误条纹——它也标记了相同的错误:

输入冒号,并按 Enter。 根据 Python 代码样式 ,下一条语句是缩进的。 如果您不小心在 Enter 后按下空格键,您将因此违反代码样式设置。
调整 PEP 8 检查
转到 ,并在 检查页面上,键入 PEP 8 以查找所有与 PEP 8 相关的检查。 默认情况下,PEP 8 编码样式违规不会被突出显示,而 PEP 8 命名约定违规只是弱警告,因此不可见。
因此,首先,让我们提高它们的重要性。 从严重性下拉列表中选择 警告:

应用更改并关闭对话框。 现在让我们返回到我们的源代码。
跟踪 PEP 8 规则
当您键入下一条语句时,例如 def demo(self,a,b,c): ,PyCharm 将显示来自 PEP 8 检查的消息:

因此,正如您所见,PyCharm 支持 PEP 8 作为官方的 Python 样式指南。 如果您查看检查列表(Ctrl+Alt+S - 检查 ),您会看到 PyCharm 在您的代码上启动了 pep8.py 工具,并指出了代码样式违规。
代码检查及其设置
更仔细地查看 检查页面。 如果您刚打开此页面,您会参考 默认检查配置文件及其默认设置:这意味着检查适用于当前项目的所有源文件。
让我们尝试为两个不同的 范围自定义此配置文件:
在 测试范围内,拼写错误应标记为拼写错误(绿色)。
在 生产范围内,拼写错误应标记为错误(红色)。
创建范围
首先,让我们定义这两个范围。 为此,请点击主工具栏上的 ,在 设置 对话框中展开节点 外观与行为 ,打开页面 作用域。 然后点击
并选择范围类型 局部。
在 添加新范围 对话框中,输入范围名称(测试),然后在项目树中选择要包含在测试范围内的目录, test_dir 。 当您包含目录时, Pattern 字段会自动填充:

重复此过程以创建生产范围。
使用这些范围创建检查配置文件
接下来,让我们 创建默认配置文件的副本。 为此,请转到 ,点击 ,并在下拉列表中选择 复制到项目…。
为其指定一个新名称,例如 MyProjectProfile。 此新配置文件是默认配置文件的副本,并具有相同的检查集。

选择此新配置文件后,让我们找到 拼写检查 并更改它。
点击 在所有范围中 按钮,并从列表中选择 测试 范围。 对 生产 范围重复相同操作。

在 测试 范围内,检查严重性保持不变(拼写错误),然而,在 生产 范围内,我们将从严重性列表中选择 错误:

注意检查的颜色代码。 如果未更改,它们显示为黑色。 如果是蓝色,则表示它们已被更改。
应用更改并关闭对话框。
因此,修改后的检查配置文件已准备就绪。 接下来,让我们根据此配置文件检查代码。 为此,请转到主菜单中的 ,并在对话框中选择所需的配置文件和范围:

执行两次——针对测试和生产范围(如果您希望保留检查结果以供进一步检查和共享,可以 导出它们)。 查看结果:

突出显示错误
除了编码样式违规外,PyCharm 还会根据所选配置文件突出显示其他错误。
例如,如果您的检查配置文件包含 Python 检查 未解析的引用 ,并且您使用了尚未导入的符号,PyCharm 会下划线未解析的引用并建议添加导入语句:

生成源代码
PyCharm 提供了许多自动生成代码的可能性。 您可以在 产品文档中探索自动生成功能。 让我们探索主要的代码生成过程。 为此,只需删除文件 Solver.py 的所有内容,然后从头开始。
首先,创建一个类的实例:

接下来,按 Alt+Enter 并选择意图操作 创建类 'Solver':

PyCharm 已经生成了一个类的框架:

接下来,让我们为类实例添加一个方法。 为此,在类实例后输入一个点,然后输入方法名称。 此方法尚不存在,PyCharm 建议创建一个:

让我们做一些手动工作——输入源代码。 当涉及到计算判别式时,我们必须提取平方根。 库 math 中有一个专用函数 sqrt ,但尚未导入。 让我们无论如何输入它,看看 PyCharm 如何处理它。 按 Alt+Enter 并选择 导入 'math':

因此,我们得到了如下的源代码:
然而,它缺乏一些重要的分析。 我们希望分析被开方数 d。 如果它是零或正数,则会计算判别式和方程的根;当被开方数为负数时,让我们抛出一个异常。
让我们用 if 构造包围一段代码块。 选择要完成的语句,当 d 为非负时,按 Ctrl+Alt+T (或从主菜单中选择 ):

从建议列表中选择 if 选项。 如您所见,PyCharm 自动添加了 if True: 并缩进了所选行:

我们对布尔表达式完全不感兴趣,因此让我们将选定的 True 更改为 d >= 0。 接下来,将光标放在最后一行的末尾,然后按 Enter。 光标停留在下一行,与 if 语句具有相同的缩进,输入 else: ,并查看 PyCharm 报告预期的缩进:

当您再次按 Enter 时,光标停留在缩进位置。 在这里,您可以使用 PyCharm 强大的自动代码补全功能输入异常表达式:

重新格式化代码
让我们再次查看我们的 Solver.py 文件。 其右侧边栏显示黄色条纹。 当您将鼠标悬停在条纹上时,PyCharm 显示代码中相应问题的描述:

它们只是警告,不会影响结果。 然而,PyCharm 提供了一种无需太多麻烦即可修复所有问题的方法。 这就是 代码重新格式化功能。 让我们尝试更改整个文件的格式。 为此,按 Ctrl+Alt+L (或从主菜单中选择 ):

现在查看代码——与 PEP 8 相关的缺陷都消失了。
请注意,您可以自行定义格式化规则。 为此,请打开 代码样式设置 ,选择语言(在本例中为 Python),并进行必要的更改:

添加文档注释
格式化现在已修复,但仍然有一些条纹。 不可避免的黄色灯泡显示了添加文档字符串注释的可能性:

选择此建议,您会看到为某个参数添加的文档字符串注释:

请注意,您必须在 智能键设置:Python 页面的编辑器设置中选择复选框 在文档注释存根中插入类型占位符:

有几种文档字符串格式,文档注释是按照您在 Python 集成工具页面上选择的格式创建的。
类型提示
文档注释可用于定义参数、返回值或局部变量的预期类型。 为什么我们需要这些? 例如,我们希望控制传递给 demo() 方法的参数类型。 为此,让我们将相应的信息添加到文档注释中(注意文档注释中的代码补全功能):

接下来,当您查看方法调用时,您会看到错误的参数被 PyCharm 的检查 类型检查器 高亮显示:
