我正在尝试Python 3.6。通过新代码,我偶然发现了这种新语法:
f"My formatting string!"
看来我们可以做这样的事情:
>>> name = "George" >>> print(f"My cool string is called {name}.") My cool string is called George.
谁能阐明这件事的内部运作方式?特别是f前缀的字符串可以采用的变量的范围是什么?
请参阅PEP 498 文字字符串插值 :
从字符串中提取的表达式在出现f字符串的上下文中进行评估。这意味着表达式可以完全访问局部和全局变量。可以使用任何有效的Python表达式,包括函数和方法调用。
因此,对表达式进行评估就好像它们出现在相同的作用域中一样。局部变量,闭包和全局变量在相同上下文中的工作方式与其他代码相同。
您可以在参考文档中找到更多详细信息:
格式化字符串文字中的表达式被视为带括号的常规Python表达式,但有一些例外。不允许为空表达式,并且lambda表达式必须用显式括号括起来。替换表达式可以包含换行符(例如,用三引号引起来的字符串),但是它们不能包含注释。每个表达式在格式化字符串文字出现的上下文中按从左到右的顺序求值。
lambda
由于您正在尝试构建3.6 alpha版本,因此请务必阅读 Python 3.6新增功能 文档。它总结了所有更改,包括指向相关文档和PEP的链接。
而仅仅是明确的:3.6没有被释放 尚未 ; 预计第一个Alpha版本要到2016年5月才能发布。请参见3.6发布时间表。