当前位置:网站首页 > 技术博客 > 正文

python静态方法怎么调用



如果人们发现你的代码难以使用或理解,你的良好意图可能不会得到预期的结果。Python社区已经正式确定了一些推荐的编程风格,以帮助每个人以一种对共享代码最有意义的共同的、商定的风格编写代码。这种风格在PEP 8中被捕获,即“Python代码的风格指南”。:Pylint是一种快速而简单的方法,可以查看您的代码是否捕获了PEP 8的精髓,因此对其他潜在用户是友好的。

简单一句话就是Pylint可以让你的代码写的更规范,漂亮,可读性高。

安装pylint

很简单,直接pip安装:

 

直接运行pylint会输出一个简单的帮助列表,以下是我们要关注的几个选项:

 

如果你需要更多的细节,你也可以要求更长的帮助信息,比如:

 

请注意这个较长的帮助输出的最后一点。这给了你一个提示,Pylint将选择什么:

 
你的第一个Pylint操作

我们将使用一个基本的Python脚本作为教程的素材。我们将使用的起始代码名为simplecaesar.py,完整的代码如下:

 
 

我们以上面输出的第二行为例,关注一下上面输出的第二行:

 
 

上边给出了关于消息符号missing-module-docstring更详细的描述。

下一步

现在我们已经完成了一些配置,让我们看看如何处理剩下的警告。
如果我们添加一个文档字符串来描述代码要做什么,将会有所帮助。然后,我在import行末尾添加了一个不必要的分号,所以我也将修复这个问题。我们稍后会介绍消息。总之,我将在第2行添加一个文档字符串,并删除第三行结尾的分号“;”。
以下是更新后的代码:

 

下面是运行它时会发生的情况:

 

好了!Pylint的最后一行告诉我们,自上次运行以来,我们的代码评级提高了多少,我们只剩下消息。

对于诸如实例变量、函数、类等的命名,有定义良好的约定。约定的重点是大写字母和小写字母的使用,以及名称中分隔多个单词的字符。这很适合通过正则表达式进行检查,因此应该匹配正则表达式。

在这种情况下,Pylint告诉我,这些变量看起来是常量,应该都是大写的。这是Pylint从一开始就存在的内部规则。您也可以创建自己的内部命名约定,但出于本教程的目的,我们希望坚持使用PEP 8标准。在这种情况下,我声明的变量应该遵循全部小写的约定。适当的规则类似于:“should match [a-z_][a-z0-9_]{2,30}$”。注意正则表达式中的小写字母(a-z和A-Z)。

如果我们使用选项来运行该规则,现在它将非常安静:

 

提示:
在命令行上指定regex真的很麻烦,尤其是在我们使用许多其他选项的情况下。这时候我们可以配置Pylint来为我们存储选项,这样我们就不必在命令行中声明它们。使用配置文件是形式化规则并与他人快速共享规则的好方法。调用将创建一个示例rcfile,其中设置了所有选项并附带了注释解释每个选项的含义,关于pylint怎么读取配置文件将在下面说明。

Pylint应该从命令行调用,使用方式如下:

 

你应该给Pylint一个python包或模块的名称,或者指定多个包或模块。Pylint不会导入这个包或模块,但使用Python内部函数来查找它们,因此与导入包和模块遵循相同的规则和配置。您应该注意您的PYTHONPATH,因为分析模块的已安装版本而不是开发版本是一个常见错误。

也可以分析Python文件,但有一些限制。需要记住的是,Pylint将尝试将文件名转换为模块名,并且只有在成功时才能处理该文件。

 

上面的代码应该始终可以工作。因为当前工作目录是自动添加到python路径之上的,

 

上面代码要运行成功,“directory”必须是一个python package(例如,有文件或者是隐式的命名空间包)或者“directory”在python path下

命令行选项

首先,我们有两个基本的(但有用的)选项。
–version
显示pylint的版本号

Pylint是由几个检查器构筑的。你可以通过指定 来禁用一个特定的检查器或者一些消息和消息类型,如果你只想启用某几个检查器或者消息标志,首先使用 禁用all,然后使用,是一个由逗号分隔的检查器名字或者消息标志列表。有关提供的检查器及其功能的描述,请参阅可用特性列表。–disable和–enable选项可用于逗号分隔的列表,混合检查器、消息id和类别,如

每个检查器都有一些特定的选项,可以接受yes/no值、整数、python正则表达式或逗号分隔的值列表(在特殊情况下通常用于覆盖正则表达式)。要获得完整的选项列表,请使用–help

其他有用的全局选项包括:

使用配置文件

前面我们已经说了,在命令行中指定太多的选项配置是很繁琐的,所以我们可以使用配置文件来指定配置,你可以使用–rcfile选项在命令行上指定配置文件,如果不指定,pylint将按照以下顺序搜索配置文件,并使用找到的第一个配置文件:

  1. 在当前工作目录下的
  2. 在当前工作目录下的
  3. 在当前工作目录下的, 前提是它至少有一个 section.
  4. 在当前工作目录下的, 前提是它至少有一个 section
  5. 如果当前工作目录在python包里, Pylint搜索Python包的层次结构,直到找到一个文件. 这允许你去指定每个模块的代码标准. 当然,如果一个目录包含一个文件,则该目录被判定为一个Python包.
  6. 由环境变量命名的文件
  7. 如果你有一个不是的主目录:
    1. 在你的home目录下
    2. 在你的home目录下
并发执行
 

这将生成4个并行Pylint子进程,其中每个提供的模块将被并行检查。检查程序发现的问题不会立即显示出来。它们在检查模块完成后显示。

在当前实现中并行运行检查有一些限制。不可以使用自定义插件(即选项),也不可能使用初始化钩子(即选项)。

退出码

Pylint返回位编码的退出代码。如果适用,下表列出了相关的stderr流消息输出。

exit codemeaningstderr stream message0no error1fatal message issued2error message issued4warning message issued8refactor message issued16convention message issued32usage error“internal error while receiving resultsfrom child linter”
“Error occurred, stopping the linter.”
“<return of linter.help()>”
“Jobs number <#> should be greater than 0”
“<IOError message when trying to open output file>”

输出的默认格式是原始文本。可以通过向pylint传递选项来改变这一点。可能的值有:json, parseable, colorized和msvs (visual studio)。

通过传递一个以逗号分隔的格式列表,可以同时使用多种输出格式。若要更改单个格式的输出文件,请在分号后指定。例如,你可以同时保存一个json报告到somefile和打印一个彩色报告到stdout:

 

此外,您可以使用选项自定义信息显示的确切方式。格式字符串使用Python的新格式语法,并且可用以下几个字段:

 

例如,之前版本(1.0之前)的默认格式可以通过以下方式获得:

 

其他一些例子:

  • the default format:
     
  • Visual Studio兼容格式(以前的msvs输出格式):
     
  • 可解析(Emacs和所有,以前的’parseable输出格式)格式:
     

选项只能与基于文本的报告(可以是未指定的,也可以是:, 或之一)组合。如果同时指定了和,那么选项将优先于报告器类定义的默认行格式。

源码分析部分

对于每个python模块,Pylint将首先显示几个’*'字符,后面跟着模块的名称。然后,一些信息的格式如下:

 

您可以获得另一种输出格式,这很有用,因为大多数编辑器或其他开发工具使用——output-format=parseable选项可以识别这种格式。

消息类型可以是以下几种:

  • [I]nformational messages that Pylint emits (do not contribute to your analysis score)
  • [R]efactor for a “good practice” metric violation
  • [C]onvention for coding standard violation
  • [W]arning for stylistic problems, or minor programming issues
  • [E]rror for important programming issues (i.e. most probably bug)
  • [F]atal for errors which prevented further processing
    有时,导致错误的代码行会显示一个指向错误的插入符号。这可能会在Pylint的未来版本中得到推广。
    例如:
 
Reports部分
  • the number of processed modules
  • for each module, the percentage of errors and warnings
  • the total number of errors and warnings
  • percentage of classes, functions and modules with docstrings, and a comparison from the previous run
  • percentage of classes, functions and modules with correct name (according to the coding standard), and a comparison from the previous run
  • a list of external dependencies found in the code, and where they appear
Score部分

版权声明


相关文章:

  • js如何给数组添加元素2024-12-06 22:01:02
  • c++结构体和c结构体2024-12-06 22:01:02
  • 跳表算法2024-12-06 22:01:02
  • 图像相似性度量方法2024-12-06 22:01:02
  • nlp销售课程的心得与感悟2024-12-06 22:01:02
  • 开源javaweb项目2024-12-06 22:01:02
  • 算法导论有必要看吗2024-12-06 22:01:02
  • 什么是UTC协议2024-12-06 22:01:02
  • 备忘录界面设计2024-12-06 22:01:02
  • 服务器性能监控的主要内容2024-12-06 22:01:02