我正在试用Python3.6。在浏览新代码时,我偶然发现了这个新语法:
f"My formatting string!"看来我们可以做这样的事:
>>> name = "George"
>>> print(f"My cool string is called {name}.")
My cool string is called George.有人能说明一下这件事的内部运作吗?特别是,f前缀字符串可以接受的变量范围是什么?
发布于 2016-03-02 10:50:52
请参阅PEP 498
从字符串中提取的表达式在f-字符串出现的上下文中进行计算。这意味着表达式完全可以访问局部变量和全局变量。可以使用任何有效的Python表达式,包括函数和方法调用。
因此,表达式的计算方法就好像它们出现在相同的作用域中一样;局部变量、闭包和全局值都与在相同上下文中的其他代码一样工作。
您将在reference documentation中找到更多的细节
格式化字符串文本中的表达式被视为被括号包围的正则Python表达式,只有少数例外。不允许使用空表达式,
lambda表达式必须被显式括号包围。替换表达式可以包含换行符(例如,在三引号字符串中),但不能包含注释。每个表达式都按照从左到右的顺序,在显示格式化字符串文字的上下文中进行计算。
由于您正在尝试3.6alpha构建,请阅读 documentation。它总结了所有更改,包括指向相关文档和PEP的链接。
而且要明确的是: 3.6还没有发布;第一个alpha预计要到2016年5月才能发布。见3.6 release schedule。
发布于 2017-07-21 08:25:40
f-字符串还支持大括号内的任何表达式。
print(f"My cool string is called {name.upper()}.")发布于 2018-04-22 06:35:25
同样值得注意的是,这个PEP498有一个支持Python <3.6的后端。
pip install fstring
from fstring import fstring
x = 1
y = 2.0
plus_result = "3.0"
print fstring("{x}+{y}={plus_result}")
# Prints: 1+2.0=3.0https://stackoverflow.com/questions/35745050
复制相似问题