标签: pylint

pylint的"公共方法太少"消息意味着什么

我在某些代码上运行pylint,并收到错误"公共方法太少(0/2)".这条消息是什么意思?该pylint的文档也没有什么帮助:

当类有太少的公共方法时使用,所以一定要确保它真的值得.

python pylint

98
推荐指数
4
解决办法
5万
查看次数

为什么pylint对象是单个字符变量名?

我仍然习惯于使用python约定并使用它pylint来使我的代码更加pythonic,但我对pylint不喜欢单个字符变量名这一事实感到困惑.我有几个像这样的循环:

for x in x_values:
   my_list.append(x)
Run Code Online (Sandbox Code Playgroud)

当我跑pylint,我得到Invalid name "x" for type variable (should match [a-z_][a-z0-9_]{2,30}- 这表明有效的变量名称必须在3到31个字符之间,但我已经查看了PEP8命名约定,我没有看到关于单个小写字母的任何明确的,我确实看到很多使用它们的例子.

PEP8中是否存在我缺少的东西,或者这是pylint独有的标准?

python naming-conventions pylint

87
推荐指数
6
解决办法
3万
查看次数

Pylint无效的常量名称

我收到关于我的常量的Pylint错误:( MIN_SOIL_PARTICLE_DENS名称无效).任何想法为什么这个常数是错误的?这是我的全部功能:

def bulk_density(clay, sand, organic_matter):
    MIN_SOIL_PARTICLE_DENS = 2.65
    x1 = (0.078 + 0.278 * sand + 0.034 * clay + 0.022 * organic_matter - 0.018
          * sand * organic_matter - 0.027 * clay * organic_matter - 0.584 * sand
          * clay)
    x2 = -0.107 + 1.636 * x1
    field_capacity = vol_water_content_33_j_kg(clay, sand, organic_matter)#m3/m3
    sat_water_content = 0.043 + field_capacity + x2 - 0.097 * sand
    return (1 - sat_water_content) * MIN_SOIL_PARTICLE_DENS
Run Code Online (Sandbox Code Playgroud)

python coding-style pylint

77
推荐指数
1
解决办法
9万
查看次数

为什么空字典在Python中是一个危险的默认值?

我把空括号作为Python函数的可选参数的默认值,而pylint(使用Sublime包)告诉我这很危险.有人可以解释为什么会这样吗?而使用None是更好的选择吗?

python pylint optional-parameters optional-arguments

76
推荐指数
2
解决办法
3万
查看次数

Pylint禁用文件的所有警告

我们在构建系统中使用pylint.我们的代码库中有一个包含一次性代码的python包,我想暂时禁用模块的所有警告,所以我可以停止用这些多余的消息来窃听其他开发人员.pylint: disable模块的所有警告都有简单的方法吗?

python pylint

75
推荐指数
4
解决办法
4万
查看次数

为什么Pylint不喜欢内置函数?

我有这样一条线:

filter(lambda x: x == 1, [1, 1, 2])
Run Code Online (Sandbox Code Playgroud)

Pylint正在显示警告:

W:  3: Used builtin function 'filter'
Run Code Online (Sandbox Code Playgroud)

这是为什么?列表理解推荐的方法是什么?

当然我可以像这样重写:

[x for x in [1, 1, 2] if x == 1]
Run Code Online (Sandbox Code Playgroud)

而且我没有收到任何警告,但我想知道是否有这样的PEP?

python list-comprehension pylint

73
推荐指数
3
解决办法
2万
查看次数

如何告诉PyLint"它是变量,而不是常量"来停止消息C0103?

我的Python 2.6程序中有一个名为"_log"的模块级变量,PyLint抱怨说:

C0103: Invalid name "_log" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
Run Code Online (Sandbox Code Playgroud)

读完这个答案后,我理解为什么会这样做:它认为变量是常量并应用常量正则表达式.但是,我不同意:我认为这是一个变数.我怎么告诉PyLint,所以它没有抱怨?PyLint如何确定它是变量还是常量 - 它是否只将所有模块级变量视为常量?

python pylint

68
推荐指数
4
解决办法
4万
查看次数

在大型python项目中查找死代码

我见过如何在Python代码中找到未使用的函数?但那真的很旧,并没有真正回答我的问题.

我有一个包含多个库的大型python项目,这些库由多个入口点脚本共享.多年来,这个项目已经吸引了许多作者,所以有很多死代码.你知道该怎么做.

我知道找到所有死代码是不可判定的.我所需要的只是一个工具,可以找到所有未被调用的函数.我们没有根据函数名称的字符串调用函数做任何事情,所以我并不担心任何病态......

我刚刚安装了pylint,但它似乎是基于文件的,并没有太多关注文件间依赖关系,甚至是函数依赖关系.

很明显,我可以在所有文件中使用gre,从中获取所有函数名称,并为每个函数名称执行grep.我只是希望有一些比那里更聪明的东西.

ETA:请注意,我不希望或想要完美的东西.我知道我的停止问题证明就像任何人一样(当我看到递归可枚举的东西时,我真的没有教过计算理论).任何试图通过实际运行代码来逼近它的东西都会花费太长时间.我只是想要在语法上通过代码的东西并说"这个函数是肯定使用的.可以使用这个函数,这个函数绝对不使用,其他人甚至似乎都不知道它存在!" 前两个类别并不重要.

python pylint code-cleanup

67
推荐指数
4
解决办法
2万
查看次数

如何修复pylint logging-not-lazy?

我正在使用prospector来检查我的代码.Pylint返回了logging-not-lazy有关我的调试消息的警告.

Line: 31
  pylint: logging-not-lazy / Specify string format arguments as logging function parameters (col 16)   Line: 42
  pylint: logging-not-lazy / Specify string format arguments as logging function parameters (col 12)
Run Code Online (Sandbox Code Playgroud)

我的代码是:

logging.debug("detect mimetypes faild because %s" % e )
Run Code Online (Sandbox Code Playgroud)

我如何修复logging-not-lazypylint?

python pylint

63
推荐指数
1
解决办法
3万
查看次数

在Python中设置应该是列表的参数的默认值的最佳实践?

我有一个Python列表作为参数.如果我将参数的默认值设置为空列表,如下所示:

def func(items=[]):
    print items
Run Code Online (Sandbox Code Playgroud)

Pylint会告诉我"危险的默认值[]作为参数".所以我想知道这里的最佳做法是什么?

python pylint default-value

62
推荐指数
2
解决办法
2万
查看次数