Pylint W1202使用%报告,但没有

时间:2018-09-12 00:30:15

标签: python pylint pep8

pylint的输出状态:

  

nltk / nltk / tag / perceptron.py:203:[W1202(logging-format-interpolation),PerceptronTagger.train]在日志记录函数中使用%格式并将%参数作为参数传递

但是看代码https://github.com/nltk/nltk/blob/develop/nltk/tag/perceptron.py#L203%字符串格式没有任何用途:

logging.info("Iter {0}: {1}/{2}={3}".format(iter_, c, n, _pc(c, n)))

我是否遗漏了一些东西或误解了W1202消息?

应该如何更改代码行以使W1202在插拔时消失?

1 个答案:

答案 0 :(得分:2)

消息解释:

这就是说,您应该将参数作为参数传递,并且假装您使用的是(旧)%格式设置(但请将其作为args而不是使用{{1 },并将参数包装在括号中)。 不是表示您正在%中使用日志消息中的字符串格式。

为什么会这样:

您希望通过这种方式的原因是,如果消息实际上是由某些日志处理程序创建的,则字符串仅经过模板替换。从性能的角度来看,字符串操作总是很昂贵的。例如,如果您要在DEBUG级别进行大量日志记录,但是很少在应用程序中使用DEBUG级别,则这会很快加起来。

如何解决:

我认为,如果将其更改为%,该消息就会消失(假设它们是数字,很难从示例中看出)。