You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python f-string中!r语法作用及对应代码可正常运行原因咨询

问题解答

首先明确结论:!r 是f-string专属的格式化转换修饰符,不需要在变量定义阶段做任何前置声明,仅在f-string格式化的运行阶段生效,所以你的代码可以正常运行。

原理说明

Python的f-string中,花括号内的变量后可以加!开头的转换标记,用来指定该变量插入字符串前的处理规则,常见的标记有3种:

  • !s:调用变量的__str__()方法输出,是默认的转换规则,输出的是人类易读的字符串形式
  • !r:调用变量的__repr__()方法输出,输出的是对象的官方可复现表示,对字符串类型会自动包裹引号、转义特殊字符
  • !a:调用ascii()方法处理变量后输出,会将非ASCII字符转换为转义序列

对应你的代码示例效果

你给出的代码运行后输出如下:

name = 'Fred'
print(f"He said his name is {name}.")
# 输出:He said his name is Fred. (name默认走!s转换,无额外引号)

print(f"He said his name is {name!r}")
# 输出:He said his name is 'Fred'. (name走!r转换,调用repr('Fred'),结果带单引号)

My_name_is = 'I said my name is Parker'
print(f'what did you say? {My_name_is!r}.')
# 输出:what did you say? 'I said my name is Parker'.

所有Python内置对象默认都实现了__repr__()方法,所以无论是什么类型的变量,都可以直接在f-string中使用!r标记,无需提前对变量做特殊定义。

内容的提问来源于stack exchange,提问作者Alg2code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:00:00