我在一个项目中发现了以下代码。 !r 的部分是什么意思?def __repr__(self): return f"user={self.user!r}, variant={self.variant!r}"
默认情况下,f-string会在花括号内显示调用str的结果。指定!r会显示调用repr的结果。来自docs 转换字段导致格式化前进行类型强制转换。通常情况下,值的格式化工作由其自身的format()方法完成。但是,在某些情况下,希望强制将类型格式化为字符串,覆盖其自身定义的格式化方式。通过在调用format()之前将值转换为字符串,可以绕过正常的格式化逻辑。目前支持三个转换标志:'!s'调用str(),'!r'调用repr()和'!a'调用ascii()。