Pylint W1202报告使用%,但没有

问题描述 投票:1回答:1

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在pylinting时消失?

python pylint pep8
1个回答
2
投票

消息解读:

它说你应该将参数作为参数传递并假装你使用(旧的)%格式化样式(但是将它们作为args传递而不是使用%并将args包装在parens中)。这并不是说您在日志消息中使用%进行字符串格式化。

为什么会这样:

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

如何解决:

我认为如果它被改为logging.info("Iter %d: %d/%d=%d", iter_, c, n, _pc(c, n))),那么消息就会消失(假设它们是数字,很难从示例中看出来)。

© www.soinside.com 2019 - 2024. All rights reserved.