问题描述
我收到了一个 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
事实上,我经常使用像后者这样的表达式进行调试,如果有一个简写就好了。
那是不是比我的(3.7.6)更高版本的python?还是对 fstring
模块的自定义?
在网络上或在 SE 中搜索它并不高效。
如果它不是标准功能,我怎样才能让它工作?
解决方法
f-strings 简化了很多地方,其中 str.format 和 % 样式格式。还有一个地方你想打印变量或表达式的值,并添加一些带有字符串的上下文,如变量名或一些任意名称,以便当你有很多语句时,你可以区分打印的值。所以使用变量名后跟值是打印样式调试更常见的格式。 块引用 这导致用户写 f"name = {name}" 并且在以下情况下会变得笨拙 变量名很长,就像filtered_data_from_third_party 一样 写成 f"filtered_data_from_third_party = {filtered_data_from_third_party}”。在这些情况下,我们采用更短的 我们在上下文中很容易理解的名称,例如 f"filtered data {filtered_data_from_third_pary}"。f-strings 也支持格式 说明符,所以你可以写 f"{name!r}" 这与 f"{repr(name)}"。
鉴于上述样板文件,一个想法已发布在 python-ideas 周围
一个格式说明符,您可以在其中使用它并且 f-string 将展开
就像一个宏变成
此功能已在 Python issue 36817 中讨论并在 Python 3.8 中发布。