python - python日志记录中字符串的延迟评估:比较`%`和`.format`
问题描述
这两个调用之间有什么区别:
import logging
logging.getLogger().debug('test: %i' % 42)
和
logging.getLogger().debug('test: {}'.format(42))
当我们将其转换为产生最终答案为 42 的字符串时,我们假设42
的地方被一些长时间的计算(比如 750 万年的计算)所取代。
如果日志记录设置为调试,第一种方法是否会延迟评估?
解决方案
两者都不懒惰。两个字符串在发送到记录器之前都被插值。python 日志记录方面的延迟评估是使用单独的参数完成的。文档https://docs.python.org/2/library/logging.html建议以下内容用于字符串插值的惰性求值;
logging.getLogger().debug('test: %i', 42)
TL;DR 在这种情况下,更容易考虑以下内容。我们向记录器发送了一个原始类型(字符串)但只有一个参数。所以不能偷懒。
推荐阅读
- c++ - 在 Visual Studio 2019 中,将纯 C++ 项目链接到 Dot Net 5 项目会生成无效的可执行文件
- python - 在比较熊猫中的两个数据帧时存储重复的行
- python-3.x - 我的 webapp 出现问题,我该如何解决?
- python - 解析剧本
- javascript - 如何根据下拉选择填充多个文本框?
- flutter - 如何在 Flutter 中为文本字段设置动画
- r - Rmarkdown 编织错误:目录名(名称)错误:路径太长
- gcc - 在 ELF 段中保留可重定位地址空间
- python - 使用 pandas 获取表中所有列的不同计数
- c++ - 无法使用 Google Test 在 C++ 中成功设置单元测试