f "{expr=}"是新的 f 字符串表达式吗(请参阅训练大括号前的等号)?从哪个版本的 Python 开始?



我收到了一个python笔记本,里面充满了像f"{expr=}"这样的表达式,这些表达式在我的环境中会产生错误消息:

var=7
print(f"{var=}")
File "<fstring>", line 1
(var=)
^
SyntaxError: invalid syntax

我怀疑/预计它实际上可能是f"expr={expr}"的一种新语法,即如下打印语句所示:

print(f"var={var}")
var=7

事实上,我经常使用后者这样的表达式进行调试,如果能有一个简写的话会很好

这是比我的版本更高的python吗(3.7.6(?还是fstring模块的定制在网络或SE中搜索它并没有什么效果。

如果它不是标准功能,我该如何让它发挥作用?

答案-Python版本3.8

f-string简化了str.format和%style格式的许多地方。仍然有一个地方需要打印变量或表达式的值,还需要添加一些具有类似字符串的变量名或任意名称的上下文,这样当您有许多语句时,就可以区分打印的值。因此,使用变量名后跟值是打印样式调试中更常见的格式。区块报价这导致用户将f";name={name}";当变量名很长,就像filtered_data_from_third_party一样写成f〃;第三方筛选的数据={filtered_data_from_third_party}";。在这种情况下,我们采用较短的我们在上下文中很容易理解的名字,比如f";过滤后的数据{filtered_data_from_third_pary}";。f-string也支持格式说明符,这样您就可以编写f"{name!r}"与f";{repr(name(}";。

考虑到上面的样板,一个想法被发布在python的想法中一个可以使用的格式说明符,f字符串将展开像宏一样进入<variable_name>=<变量的值>。开始d被选择为f";{name!d}"将扩展到f〃;name={repr(name(}";。这最初在bpo36774中实现。经过讨论!d已更改与Guido和其他核心开发人员的输入一起使用=,因为成为服务的用例!d,并按字母顺序保留其他用途的字符串格式的名称。所以改为使用=作为bpo36817中此功能的注释。它的使用概述如下所示,具有各种可用功能。

点击此处阅读更多

此功能在Python第36817期中进行了讨论,并在Python 3.8中发布。

最新更新