对我来说,新的Python3.6F-strings似乎是字符串可用性的一个巨大飞跃,我很乐意在新的项目中全心投入使用,这些项目可能运行在旧的解释器上。2.7、3.3-3.5的支持会很好,但至少我想在Python3.5代码库中使用它们。如何导入3.6格式的字符串文本,以供较旧的解释器使用?
我知道像f"Foo is {age} {units} old"
这样的格式化字符串文本不会破坏更改,因此不会包含在from __future__ import ...
调用中。但这一变化并不是后端口的(AFAIK),我需要确保我用f字符串编写的任何新代码都只在Python 3.6+上运行,而python3.6+对于许多项目来说是一个交易破坏者。
不幸的是,如果您想使用它,您必须要求
Python 3.6+
,与矩阵乘法运算符@
和Python 3.5+
或yield from
相同(我认为Python 3.4+
)它们对代码的解释方式进行了更改,因此在旧版本中导入时会抛出语法错误。这意味着你需要把它们放在某个地方,而不是放在老Python身上,或者放在由
eval
或exec
保护的地方(我不推荐后两种!)。所以,是的,您是对的,如果您想支持多个python版本,就不能轻松地使用它们。
我用的是:
它解包(
**
)由locals()
返回的dict,该dict将所有局部变量作为dict{variable_name: value}
注意除非使用
nonlocal
(Python 3.0+)将其导入本地作用域,否则这对于在外部作用域中声明的变量不起作用。你也可以使用
在字符串中包含全局变量。
future-fstrings将f字符串带到Python 2.7脚本中。(我根据文档假设为3.3-3.5。)
一旦通过
pip install future-fstrings
安装pip,就必须在代码顶部放置一个特殊的行。这句话是:然后,可以在代码中使用格式化的字符串文本(f-strings):
相关问题 更多 >
编程相关推荐