当前位置: 首页 > news >正文

Python 高手编程系列三千四百四十一:有用的工具

前面的约定和实践的一部分可以使用下列工具来控制和处理。
• Pylint:一个非常灵活的源代码分析器。
• pep8 和 flake8:它们是小型的代码风格检查器,也是包装器,添加了一些更有用的
特性,例如静态分析和复杂度测量。
Pylint
除了一些质量保证方面的度量之外,Pylint 还允许你检查给定的源代码是否遵循某种
命名约定。它的默认设置对应于 PEP 8,Pylint 脚本会提供一份 shell 报告输出。
要安装 Pylint,你可以使用 pip,代码如下:
$ pip install pylint
安装完成后,pylint 这个命令就可用了,可以在一个模块上运行,也可以利用通配符
在多个模块上运行。我们在 Buildout 的 bootstrap.py 脚本上试用这个命令,代码如下:
$ wget -O bootstrap.py https://bootstrap.pypa.io/bootstrap-buildout.py -q
$ pylint bootstrap.py
No config file found, using default configuration
************* Module bootstrap
C: 76, 0: Unnecessary parens after ‘print’ keyword (superfluous-parens)
C: 31, 0: Invalid constant name “tmpeggs” (invalid-name)
C: 33, 0: Invalid constant name “usage” (invalid-name)
C: 45, 0: Invalid constant name “parser” (invalid-name)
C: 74, 0: Invalid constant name “options” (invalid-name)
C: 74, 9: Invalid constant name “args” (invalid-name)
C: 84, 4: Import “from urllib.request import urlopen” should be placed at
the top of the module (wrong-import-position)

Global evaluation

Your code has been rated at 6.12/10
Pylint 的实际输出要更长一些,这里只截取了其中一部分。
注意,Pylint 可能会给出不好的评分或抱怨。例如,import 语句没有被模块本身的代
码使用,这在某些情况下是完全可以的(使其在命名空间中可用)。
如果一个库采用混合大小写为方法命名,那么对其调用可能也会降低评分。无论如何,
总体评价并不那么重要。Pylint 只是一个工具,指出可能的改进之处。
要想对 Pylint 进行微调,第一件要做的事就是,使用-generate-rcfile 选项在项
目目录下创建一个.pylintrc 配置文件,如下所示:
$ pylint --generate-rcfile > .pylintrc
这个配置文件是自带说明的(self-documenting,每个选项都用注释说明),应该已经包
含所有可用的配置选项。
除了检查是否遵守某种任意的编码标准,Pylint 还可以给出有关整体代码质量的额外
信息,例如:
• 代码重复度量。
• 未使用的变量和导入。
• 缺失的函数、方法或类的文档字符串。
• 函数签名过长。
默认启用的可用检查列表非常长。重要的是要知道,有些规则是任意的,不能轻易应
用到所有代码库。要记住,一致性永远比遵守某种任意的标准更有价值。幸运的是,Pylint
是可调节的,所以如果你的团队使用一些与默认不同的命名和编码约定,你可以轻松配置
来检查与这些约定的一致性。
pep8 和 flake8
pep8 这个工具只有一个目的:它仅提供对 PEP 8 代码约定的风格检查。这是它与 Pylint
的主要区别,后者具有许多额外的功能。对于那些仅对 PEP 8 标准的自动化代码风格检查
感兴趣的程序员来说,这是最佳选择,不需要任何额外的工具配置(像 Pylint 那样)。
pep8 可以用 pip 安装,代码如下:
$ pip install pep8
在Buildout的bootstrap.py脚本上运行pep8,它会给出不符合代码风格之处的简短列表:
$ wget -O bootstrap.py https://bootstrap.pypa.io/bootstrap-buildout.py -q
$ pep8 bootstrap.py
bootstrap.py:118:1: E402 module level import not at top of file
bootstrap.py:119:1: E402 module level import not at top of file
bootstrap.py:190:1: E402 module level import not at top of file
bootstrap.py:200:1: E402 module level import not at top of file
与 Pylint 的输出的主要区别在于其长度。pep8 只关注风格,所以它不会给出任何其他
警告,例如未使用的变量、太长的函数名称或文档字符串缺失。它也不会给出任何评分。
它真的很有意义,因为不存在部分一致性。任何对风格指南的违背 — 即使是最小的违
背 — 也会使代码立刻变得不一致。
pep8的输出比PyLint更简单,也更容易解析,所以如果你想要与一些连续集成解决方案(例
如 Jenkins)集成,那么选择 pep8 可能更好。如果你想要一些静态分析的功能,那么可以使用
flake8包,它是pep8和其他一些工具的包装器,可以轻松扩展,并提供了更丰富的功能,包括:
• McCabe 复杂度测量。
• 利用 pyflakes 做静态分析。
• 利用注释禁用整个文件或单行代码。
小结
本章通过 Python 官方风格指南(PEP 8 文档)来介绍广受认可的编码约定。除了官方
风格指南,介绍了一些命名建议,可以让你以后的代码更加明确;还介绍了一些有用的工
具,在保持代码风格一致方面不可或缺。
所有这些内容都是为本书第一个实用主题做准备 — 编写并分发 Python 包。下一章我
们将学习如何在公共 PyPI 仓库中发布我们自己的包,以及在私人组织中如何利用打包生态
系统的力量。

http://www.zskr.cn/news/1509336.html

相关文章:

  • 从5000个Case到50个:资深验证工程师教你用正交矩阵法高效分解测试点
  • 鼎阳示波器选件机制解析:从软件密钥生成到硬件功能验证,我们聊点干货
  • 纯HTML图像热点区域实现:支持rect/circle/poly三种形状,兼容Chrome/Firefox/Safari/Edge/IE11
  • 网盘直链解析终极指南:一键解锁高速下载的完整解决方案
  • 常州离婚财产分割纠纷难解决?2026年这5位离婚律师推荐 - 本地品牌推荐
  • Windows虚拟声卡Scream终极教程:让音频在局域网内自由飞翔的完整指南
  • 广东寄大件,怎么寄最省钱?这份技巧请收好 - 快递物流资讯
  • ARMv8异常处理避坑指南:调试那些年遇到的Data Abort和SError(含GIC配置)
  • 3分钟掌握百度网盘提取码智能获取:告别手动搜索的5个高效技巧
  • 2026年6月便携式污泥浓度计主要品牌排行榜:国产品牌全面崛起,精准选型赋能水处理行业提质增效 - 仪表品牌排行榜
  • 别再乱用set_input_transition了!给理想时钟设置转换时间的正确姿势(Design Compiler/PrimeTime)
  • Qdrant混合搜索实战:语义+关键词+过滤一体化架构解析
  • 2026 常州卫生间漏水不用砸砖?微创补漏靠谱方案 - 苏易修缮
  • 课后习题:第九章
  • 2026年电渗析定制厂家深度对比:技术、工程与性价比的全面分析 - 优质品牌商家
  • G-Helper:华硕笔记本性能调校的革命性开源方案
  • 2026年6月医院消毒监测厂商怎么选,动物房试验/洁净工作台检测/卫生安全评价报告整体解决方案,医院消毒监测厂家哪家强 - 品牌推荐师
  • 2026 南通卫生间漏水不用砸砖?微创补漏靠谱方案 - 苏易修缮
  • 2026年芝麻灰路沿石厂家电话怎么找?五莲石材产业园五大企业横向分析 - 优质品牌商家
  • AJ-Captcha:企业级行为验证码架构设计与技术实现深度解析
  • 2026年常州合同纠纷律师怎么选?看这五个关键点不踩雷 - 本地品牌推荐
  • 【毕业设计】基于Android的陪诊护理系统APP的设计与实现医院陪诊护理移动端系统设计(源码+文档+远程调试,全bao定制等)
  • 探索SkyWater PDK:开源芯片设计的工艺设计套件深度解析
  • 给UART RX加个10K上拉电阻,可能是解决嵌入式设备启动玄学问题的最便宜方案
  • 从RTL到流片:CEVA BX2软核DSP的完整SoC集成避坑指南与工具链实战
  • 别再只看主频了!手把手教你用FLOPS公式,算出你的CPU/GPU真实算力(附Intel/AMD/NVIDIA实例)
  • 技巧科普:deepseek 流程图怎么导出?依托 AI 导出鸭一站式破除各类流程图导出阻碍 - AI火狐
  • 量子增强AI:NISQ时代混合架构的工程实践指南
  • 量子Walsh-Hadamard变换原理与信号处理应用
  • 从亚稳态到时序收敛:一个真实IP集成案例中的Multi-Cycle Path约束实战