我收到了一个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中发布。