PyLint message: logging-format-interpolation(PyLint 消息:记录格式插值)
问题描述
对于以下代码:
logger.debug('message: {}'.format('test'))
pylint
产生以下警告:
记录格式插值 (W1202):
在日志记录函数中使用 % 格式并将 % 参数传递为参数 当日志语句的调用形式为记录.(format_string.format(format_args ...))".这样的调用应改用 % 格式,但将插值留给通过将参数作为参数传递来记录函数.
Use % formatting in logging functions and pass the % parameters as arguments Used when a logging statement has a call form of "logging.(format_string.format(format_args...))". Such calls should use % formatting instead, but leave interpolation to the logging function by passing the parameters as arguments.
我知道我可以关闭此警告,但我想了解它.我假设使用 format()
是在 Python 3 中打印语句的首选方式.为什么对于 logger 语句不适用?
I know I can turn off this warning, but I'd like to understand it. I assumed using format()
is the preferred way to print out statements in Python 3. Why is this not true for logger statements?
推荐答案
logger 语句不是这样,因为它依赖于以前的 "%" 格式(如字符串),使用给予 logger 调用的额外参数来提供此字符串的惰性插值.例如,不要这样做:
It is not true for logger statement because it relies on former "%" format like string to provide lazy interpolation of this string using extra arguments given to the logger call. For instance instead of doing:
logger.error('oops caused by %s' % exc)
你应该这样做
logger.error('oops caused by %s', exc)
所以只有在实际发出消息时才会对字符串进行插值.
so the string will only be interpolated if the message is actually emitted.
使用 .format()
时,您无法享受此功能.
You can't benefit of this functionality when using .format()
.
根据 logging
文档的 优化 部分:
Per the Optimization section of the logging
docs:
消息参数的格式被推迟到无法避免为止.但是,计算传递给 logging 方法的参数也可能很昂贵,如果 logger 只是丢弃您的事件,您可能希望避免这样做.
Formatting of message arguments is deferred until it cannot be avoided. However, computing the arguments passed to the logging method can also be expensive, and you may want to avoid doing it if the logger will just throw away your event.
这篇关于PyLint 消息:记录格式插值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PyLint 消息:记录格式插值
基础教程推荐
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01