Pylint W1202 报告使用 % 但有 none
Pylint W1202 reporting using % but there's none
pylint 的输出状态:
nltk/nltk/tag/perceptron.py:203: [W1202(logging-format-interpolation), PerceptronTagger.train] Use % formatting in logging functions and pass the % parameters as arguments
但是查看代码 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 消息?
应该如何更改代码行,以便在pylinting时W1202消失?
消息解读:
意思是您应该将参数作为实参传递,并且假装您使用的是(旧的)%
格式样式(而是将它们作为实参传递使用 %
并将参数包装在括号中)。 不是 表示您在日志消息中使用 %
进行字符串格式化。
为什么会这样:
您希望以这种方式传递的原因是,如果消息实际上是由某个日志处理程序创建的,则字符串只会经过模板化替换。从性能的角度来看,字符串操作总是很昂贵的。例如,如果您在 DEBUG 级别进行大量日志记录,但很少在您的应用程序中使用 DEBUG 级别,那么这会很快加起来。
如何解决:
我认为如果将其更改为 logging.info("Iter %d: %d/%d=%d", iter_, c, n, _pc(c, n)))
消息就会消失(假设它们是数字,很难从示例中分辨出来)。
pylint 的输出状态:
nltk/nltk/tag/perceptron.py:203: [W1202(logging-format-interpolation), PerceptronTagger.train] Use % formatting in logging functions and pass the % parameters as arguments
但是查看代码 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 消息?
应该如何更改代码行,以便在pylinting时W1202消失?
消息解读:
意思是您应该将参数作为实参传递,并且假装您使用的是(旧的)%
格式样式(而是将它们作为实参传递使用 %
并将参数包装在括号中)。 不是 表示您在日志消息中使用 %
进行字符串格式化。
为什么会这样:
您希望以这种方式传递的原因是,如果消息实际上是由某个日志处理程序创建的,则字符串只会经过模板化替换。从性能的角度来看,字符串操作总是很昂贵的。例如,如果您在 DEBUG 级别进行大量日志记录,但很少在您的应用程序中使用 DEBUG 级别,那么这会很快加起来。
如何解决:
我认为如果将其更改为 logging.info("Iter %d: %d/%d=%d", iter_, c, n, _pc(c, n)))
消息就会消失(假设它们是数字,很难从示例中分辨出来)。