在 Python >=3.6 中,可以使用 f 字符串作为str.format
方法的替代品。举个简单的例子,这些是等价的:
'{} {}'.format(2+2, "hey")
f'{2+2} {"hey"}'
忽略格式说明符,我基本上可以str.format
在 f 字符串中移动大括号内的位置参数。请特别注意,我可以str
在这里只放文字,尽管它可能看起来有点笨拙。
但是有一些限制。具体来说,任何形状或形式的反斜杠都不允许在 f 字符串的大括号内:
'{}'.format("new\nline") # legal
f'{"new\nline"}' # illegal
f'{"\\"}' # illegal
如果它在大括号内,我什至不能\
用来分割长线;
f'{2+\
2}' # illegal
即使在 normal 's\
中完全允许这种用法;str
'{\
}'.format(2+2) # legal
在我看来,如果解析器\
在 f 字符串的大括号内看到字符,则硬停止被编码到解析器中。为什么要实施此限制?尽管文档指定了这种行为,但并没有说明原因。