2024-05-16 01:07:10 发布
网友
我们通常使用反斜杠来转义非法字符
例如,转义双引号
>>> "\"" == '"' True
在f字串中,花括号用于放置。要表示卷曲大括号,大括号将加倍
比如说,
>>> f"{{}}" == "{}" True
为什么在开发f字符串时不支持这种直观的方法?是否有技术或设计方面的原因
>>> f'\{\}' File "<stdin>", line 1 SyntaxError: f-string expression part cannot include a backslash
jsmart的答案听起来不错,但是existing f-string implementation可以相当容易地编写成使用\{和\}而不是{{和}}。PEP 536将解决的限制是不同的,例如如果使用'来限定f字符串本身,则无法在f字符串的表达式部分中使用'
\{
\}
{{
}}
'
更有可能的是,f字符串使用{{和}},这并不是因为\{和\}很难实现,而是因为在引入f字符串时str.format已经使用了{{和}}来表示文字大括号,并且f字符串语法基于str.format的语法。使用{{和}}可以更容易地在str.format和f字符串之间转换。没有令人信服的理由改变现有的符号
我相信PEP 536(文字字符串插值的最终语法)说明了这一点: https://www.python.org/dev/peps/pep-0536/
PEP动机部分的一个简短片段是“CPython中f-strings的当前实现依赖于现有的字符串解析机制及其标记的后处理。这导致对f-strings中可能可用的表达式的几个限制:”
有关更多信息,请参阅本linked email
jsmart的答案听起来不错,但是existing f-string implementation可以相当容易地编写成使用
\{
和\}
而不是{{
和}}
。PEP 536将解决的限制是不同的,例如如果使用'
来限定f字符串本身,则无法在f字符串的表达式部分中使用'
更有可能的是,f字符串使用
{{
和}}
,这并不是因为\{
和\}
很难实现,而是因为在引入f字符串时str.format已经使用了{{
和}}
来表示文字大括号,并且f字符串语法基于str.format的语法。使用{{
和}}
可以更容易地在str.format和f字符串之间转换。没有令人信服的理由改变现有的符号我相信PEP 536(文字字符串插值的最终语法)说明了这一点: https://www.python.org/dev/peps/pep-0536/
PEP动机部分的一个简短片段是“CPython中f-strings的当前实现依赖于现有的字符串解析机制及其标记的后处理。这导致对f-strings中可能可用的表达式的几个限制:”
有关更多信息,请参阅本linked email
相关问题 更多 >
编程相关推荐