当前位置: 首页 > 知识库问答 >
问题:

Python日志变量:插值还是格式?

景凌
2023-03-14

建议使用Python记录变量的方法是什么?为什么更好?

旧式插值:

apple = "green"
logger.debug("apple is %s", apple)

新样式<代码>。format()

logger.debug("apple is {}".format(apple))

我听说插值是首选,因为它只在字符串要打印时才计算字符串,但我还没有验证它是否真的重要。

共有2个答案

涂浩皛
2023-03-14

从Python 3.8开始使用f字符串的=功能

logger.debug(f"{apple=}")

输出apple=green。请参阅Python:打印变量的名称和值?。

元叶秋
2023-03-14
logger.debug("apple is {}".format(apple))
logger.debug(f"apple is {apple}")

新样式格式将始终生成字符串。如果这很昂贵(例如记录大熊猫数据帧),这将影响性能。

logger.debug("apple is %s", apple)

旧式插值仅在消息最终实际被记录的情况下构建日志记录字符串。如果您的应用程序的日志级别是INFO/警告/错误/关键之一,它将仅记录至少该日志级别的消息。因此,此DEBUG级别的消息将不会被记录并跳过插值。

总之,是的,插值可以节省格式化工作(有效地调用__str__)——如果这真的很重要,则取决于您的应用程序。

 类似资料:
  • 产生以下警告: 日志记录-格式-插值(W1202): 在日志记录函数中使用%formatting并将%参数作为参数传递给日志记录语句的调用形式为“logging.(format_string.format(format_args...))”时使用的参数。这样的调用应该使用%formatting,但通过将参数作为参数传递,将插值留给日志记录函数。 因此,正确的日志记录方式是: 但是如何传递多个参数呢

  • 问题内容: 在PHP中,可以编写: 但是在Python中,它是: 有没有办法代替我在字符串中插入变量?如果没有的话,这更像pythonic吗? 获得参考的任何人的奖励积分 问题答案: 您现在的操作方式是一种Python方式。您也可以使用本地人字典。像这样: 现在,它看起来不太像pythonic,但这是实现PHP格式相同效果的唯一方法。我只会坚持您的操作方式。

  • 问题内容: 对于以下代码: 产生以下警告: 日志记录格式插值(W1202): 在日志记录函数中使用%格式,并将%参数作为参数传递。在日志记录语句的调用形式为“ logging。(format_string.format(format_args …))”时使用。这样的调用应改为使用%格式,但通过将参数作为参数传递,将插值留给日志记录函数。 我知道我可以关闭此警告,但我想理解它。我假定使用是在Pyth

  • 问题内容: 我已经学习Python几个月了,对C语言的了解也很少,我想知道是否有人可以帮我解决这个疑问: 变量是名称,值还是存储位置? 例如: 变量x,x的值还是x在内存中的位置? 我正在寻找关于什么是变量的清晰解释。我已经看过Wikipedia上有关变量和此问题的页面,但对我来说都不是很清楚。如果这是一个重复的问题,那么指向正确答案的链接将非常有用。 谢谢! 问题答案: 语句发生了几件事: 创建

  • 不仅可以直接在属性值中使用变量,还可以用类似 @{name} 的结构,以“插值”的方式在选择器名、属性名、URL、import、媒体查询中使用变量。在编译时,变量将被替换为它们相应的值。 1)选择器名插值 Less选择器名称中可以引用任何变量。如: @head: h; .@{head}2 {   font-size: 16px; } 编译后的CSS代码为: .h2 {   font-size:

  • 问题内容: PHP变量是通过值还是通过引用传递? 问题答案: 根据PHP文档的价值。 默认情况下,函数参数是按值传递的(因此,如果函数中参数的值发生更改,则不会在函数外部进行更改)。要允许函数修改其参数,必须通过引用将其传递。 有一个参数总是通过引用传递函数,在前面加上符号( & ),以在函数定义的参数名称。