我应该在项目的每个文件中添加__future__语句吗?

m45*_*t3r 8 python python-2.7 python-3.x

我正在为当前唯一的Python 2项目贡献代码,以允许它在Python 3上运行.我应该进行以下导入:

from __future__ import (unicode_literals, print_function,
                        absolute_imports, division)
Run Code Online (Sandbox Code Playgroud)

在项目的每个文件上或只使用我在每个文件上需要的文件?

Bak*_*riu 3

据我所知,对此没有任何明确的约定,但是我倾向于将它们全部添加到每个文件中。

您可能知道您现在__future__正在使用哪些功能,但是如果将来文件被修改并且突然需要其他功能或不再需要某个功能怎么办?

  • 如果将它们全部放在每个文件中,那么您已经知道可以用“python3 风格”编写所有内容,并确保不会发生奇怪的错误/错误。如果不使用某个功能也没有问题。
  • 如果你不这样做,那么你就有机会:
    • 忘记添加该功能的导入,即使您知道这是必需的。
    • 没有意识到你实际上需要一个新功能,因为你已经习惯了它并且并不总是记住它是 python3 功能
    • 忘记删除未使用的功能导入。请注意,这通常需要检查整个文件以确保您不需要某个功能。

放置所有导入始终可以让您编写类似 python3 的代码,这意味着您不必准确记住特定文件中打开/关闭的功能。你只要写python3就可以了。

另一方面,在选择要导入的功能时,您必须根据文件中活动的功能调整每个文件的编码方式。

更喜欢第一个解决方案的另一个原因是 IDE 通常提供一种为新文件指定模板的方法,这意味着您甚至不必记住自己添加所有导入,IDE 会为您完成此操作。


这一推理只有一个问题:添加导入不会破坏代码。这显然是无法保证的。然而,您应该已经完成​​了必须做的更改以将软件移植到 python3,因此它不应该增加移植软件所需的时间。