我可以将 Python 3.6 的格式化字符串文字 (f-strings) 导入旧的 3.x、2.x Python 吗?

新手上路,请多包涵

新的 Python 3.6 f-strings 对我来说似乎是字符串可用性的巨大飞跃,我很乐意投入并全心全意地在可能在旧解释器上运行的新项目中采用它们。 2.7、3.3-3.5 支持会很好,但至少我想在 Python 3.5 代码库中使用它们。我如何导入 3.6 的格式化字符串文字以供旧解释器使用?

我知道像 f"Foo is {age} {units} old" 这样的格式化字符串文字没有破坏性变化,因此不会包含在 from __future__ import ... 调用中。但是更改没有向后移植(AFAIK)我需要确保我用 f-strings 编写的任何新代码都只能在 Python 3.6+ 上运行,这对很多项目来说都是一个交易破坏者。

原文由 zachd1_618 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 556
2 个回答

Unfortunatly if you want to use it you must require Python 3.6+ , same with the matrix multiplication operator @ and Python 3.5+ or yield from ( Python 3.4+ 我认为)

这些更改了代码的解释方式,因此在旧版本中导入时会抛出语法错误。这意味着您需要将它们放在旧 Python 中未导入或由 evalexec 保护的地方(我不推荐后两者!)。

所以是的,你是对的,如果你想支持多个 python 版本,你不能轻易使用它们。

原文由 MSeifert 发布,翻译遵循 CC BY-SA 3.0 许可协议

future-fstrings 将 f-strings 引入 Python 2.7 脚本。 (我根据文档假设 3.3-3.5。)

通过 pip install future-fstrings 进行 pip 安装后,您必须在代码顶部放置一个特殊的行。那条线是:

 # -*- coding: future_fstrings -*-

然后,您可以在代码中使用格式化字符串文字 (f-strings):

 # -*- coding: future_fstrings -*-
var = 'f-string'
print(f'hello world, this is an {var}')

原文由 Wayne 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题