微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在python f字符串中使用双大括号而不是反斜杠?

如何解决为什么在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 举报,一经查实,本站将立刻删除。