Pylint W1202 сообщает с использованием%, но его нет - PullRequest
0 голосов
/ 12 сентября 2018

Выход из состояний 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 голосов
/ 12 сентября 2018

Интерпретация сообщения:

Это говорит о том, что вы должны передать параметры в качестве аргументов и притвориться , что вы использовали (старый) стиль форматирования % (но передайте их как аргументы вместо использования % и оборачивания аргументов в скобках). не говорит о том, что вы используете % для форматирования строки в сообщении журнала.

Почему это так:

Причина, по которой вы хотите пройти этот путь, заключается в том, что строка проходит шаблонную подстановку, только если сообщение действительно создано каким-либо обработчиком журнала.Строковые операции всегда дороги с точки зрения производительности.Если вы выполняете тонну журналирования на уровне DEBUG, но редко используете уровень DEBUG в своем приложении, например, это может сложиться быстро.

Как это исправить:

Я думаю, что если бы оно было изменено на logging.info("Iter %d: %d/%d=%d", iter_, c, n, _pc(c, n))), сообщение исчезло бы (предполагая, что это цифры, что трудно понять из примера).

...