为什么在python f-strings中使用双花括号而不是反斜杠?

fiz*_*ear 5 python string-formatting python-internals

我们通常使用反斜杠来转义非法字符。

例如,转义双引号。

>>> "\"" == '"'
True
Run Code Online (Sandbox Code Playgroud)

在 f 字符串中,花括号用于占位。为了表示花括号,花括号被加倍。

例如,

>>> f"{{}}" == "{}"
True
Run Code Online (Sandbox Code Playgroud)

为什么在开发 f 弦时不喜欢这种直观的方法?有什么技术或设计原因吗?

>>> f'\{\}'
  File "<stdin>", line 1
SyntaxError: f-string expression part cannot include a backslash
Run Code Online (Sandbox Code Playgroud)

jsm*_*art 3

我相信 PEP 536(文字字符串插值的最终语法)说明了这一点: https: //www.python.org/dev/peps/pep-0536/

PEP 动机部分的一个简短片段是“CPython 中 f 字符串的当前实现依赖于现有的字符串解析机制及其标记的后处理。这导致对 f 字符串中可用的可能表达式的一些限制:“

有关更多信息,请参阅此链接的电子邮件