!r 在 Python 中是什么意思?

Nep*_*nat 11 python f-string

我在一个项目中找到了以下代码。

什么是!r部分是什么意思?

def __repr__(self):
    return f"user={self.user!r}, variant={self.variant!r}"
Run Code Online (Sandbox Code Playgroud)

sna*_*erb 11

默认情况下,f 字符串显示对花括号内的值调用str的结果。指定!r显示调用repr的结果。

文档

转换字段在格式化之前会导致类型强制。通常,格式化值的工作是由值本身的format () 方法完成的。但是,在某些情况下,需要强制将类型格式化为字符串,覆盖其自己的格式化定义。通过在调用format ()之前将值转换为字符串,绕过了正常的格式化逻辑。

当前支持三种转换标志:'!s' 调用 str() 值,'!r' 调用 repr() 和 '!a' 调用 ascii()。

  • 我只会提供一些文档的指针:[这个问题](/sf/ask/3121665291/)和[Python官方文档](https:// /docs.python.org/3/reference/lexical_analysis.html#formatted-string-literals) 和 [PEP498](https://www.python.org/dev/peps/pep-0498/#sr-and-a -are-redundant)拥有全部! (2认同)