fstrings如何在Python中实现?我正在通过IDE查看字符串和fstring变量具有相同推断类型str
的类型。它是一个全新的类还是实现与字符串相同的接口?解释它是如何工作的。
我问的原因是因为我想评估我们实施我们的版本是否合理。另外,有可能这样做,以使IDE能够根据字母推断出不同的类型。
答案 0 :(得分:3)
(无论如何,还是在CPython中)实现了它们……
我可能错过了一些景点。
基于此,我想说添加其他前缀会很困难,并且您实际上将在创建自己的Python分支。
答案 1 :(得分:1)
来自PEP 498:
F字符串提供了一种使用最小语法在字符串文字中嵌入表达式的方法。应当注意,f字符串实际上是在运行时评估的表达式,而不是常数。在Python源代码中,f字符串是文字字符串,前缀为'f',其中大括号内包含表达式。表达式将替换为其值。
fstrings是在CPython内部实现的-处理它们实际上是评估括在花括号内的表达式,这里是one example from CPython source code,用于解析表达式。
我们可以使用dis
来观察操作码:
import dis
dis.dis("f'{x}'")
1 0 LOAD_NAME 0 (x)
2 FORMAT_VALUE 0
4 RETURN_VALUE
dis.dis("x")
0 LOAD_NAME 0 (x)
2 RETURN_VALUE
您可以看到,唯一添加的操作码是FORMAT_VALUE
,这确认fstring没有增加任何开销,并且它们实际上是一个表达式,而不是format
,例如,我们看到{{ 1}},LOAD_CONST
和LOAD_ATTR
:
CALL_FUNCTION