我在某些代码上运行pylint,并收到错误"公共方法太少(0/2)".这条消息是什么意思?该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独有的标准?
我收到关于我的常量的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函数的可选参数的默认值,而pylint(使用Sublime包)告诉我这很危险.有人可以解释为什么会这样吗?而使用None是更好的选择吗?
我们在构建系统中使用pylint.我们的代码库中有一个包含一次性代码的python包,我想暂时禁用模块的所有警告,所以我可以停止用这些多余的消息来窃听其他开发人员.pylint: disable模块的所有警告都有简单的方法吗?
我有这样一条线:
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 2.6程序中有一个名为"_log"的模块级变量,PyLint抱怨说:
C0103: Invalid name "_log" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
Run Code Online (Sandbox Code Playgroud)
读完这个答案后,我理解为什么会这样做:它认为变量是常量并应用常量正则表达式.但是,我不同意:我认为这是一个变数.我怎么告诉PyLint,所以它没有抱怨?PyLint如何确定它是变量还是常量 - 它是否只将所有模块级变量视为常量?
我见过如何在Python代码中找到未使用的函数?但那真的很旧,并没有真正回答我的问题.
我有一个包含多个库的大型python项目,这些库由多个入口点脚本共享.多年来,这个项目已经吸引了许多作者,所以有很多死代码.你知道该怎么做.
我知道找到所有死代码是不可判定的.我所需要的只是一个工具,可以找到所有未被调用的函数.我们没有根据函数名称的字符串调用函数做任何事情,所以我并不担心任何病态......
我刚刚安装了pylint,但它似乎是基于文件的,并没有太多关注文件间依赖关系,甚至是函数依赖关系.
很明显,我可以在所有文件中使用gre,从中获取所有函数名称,并为每个函数名称执行grep.我只是希望有一些比那里更聪明的东西.
ETA:请注意,我不希望或想要完美的东西.我知道我的停止问题证明就像任何人一样(当我看到递归可枚举的东西时,我真的没有教过计算理论).任何试图通过实际运行代码来逼近它的东西都会花费太长时间.我只是想要在语法上通过代码的东西并说"这个函数是肯定使用的.可以使用这个函数,这个函数绝对不使用,其他人甚至似乎都不知道它存在!" 前两个类别并不重要.
我正在使用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列表作为参数.如果我将参数的默认值设置为空列表,如下所示:
def func(items=[]):
print items
Run Code Online (Sandbox Code Playgroud)
Pylint会告诉我"危险的默认值[]作为参数".所以我想知道这里的最佳做法是什么?