如何解决为什么在python f字符串中使用双大括号而不是反斜杠?
我们通常使用反斜杠来转义非法字符。
例如,转义双引号。
>>> "\"" == '"'
True
在f弦中,大括号用于占位符。为了表示花括号,花括号要加倍。
例如,
>>> f"{{}}" == "{}"
True
为什么在开发f弦琴时不喜欢这种直观的方法?有技术或设计上的原因吗?
>>> f'\{\}'
File "<stdin>",line 1
SyntaxError: f-string expression part cannot include a backslash
解决方法
我相信PEP 536(文字字符串插值的最终语法)可以说明这一点: https://www.python.org/dev/peps/pep-0536/
PEP的“动机”部分的一小段内容是“ CPython中f字符串的当前实现依赖于现有的字符串解析机制及其令牌的后处理。这导致对可在其中使用的可能表达式的一些限制。 f字符串:“
有关其他信息,请参阅此linked email。
, jsmart的答案听起来不错,但是existing f-string implementation 很容易被编写为使用\{
和\}
而不是{{
和{ {1}}。 PEP 536应该解决的限制是不同的,例如如果使用}}
来分隔f字符串本身,则无法在f字符串的表达式部分中使用'
。
f字符串更可能使用'
和{{
并不是因为}}
和\{
难以实现,而是因为str.format已经在使用\}
和{{
代表引入f字符串时的文字大括号,并且f字符串语法基于str.format的语法。使用}}
和{{
可以更轻松地在str.format和f字符串之间进行转换。没有令人信服的理由来更改现有的表示法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。