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

时间:2014-03-29 15:09:12

标签: python python-2.7 python-3.x

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

from __future__ import (unicode_literals, print_function,
                        absolute_imports, division)

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

1 个答案:

答案 0 :(得分:3)

据我所知,没有任何明确的约定,但是我倾向于在每个文件中添加所有这些。

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

  • 如果你把所有文件放在每个文件上,那么你已经知道你可以用“python3样式”编写所有内容,并确保没有出现奇怪的错误/错误。如果不使用某个功能,则没有问题。
  • 如果你不这样做,你有可能:
    • 忘记添加该功能的导入,即使您知道它是必需的。
    • 没有意识到你实际上需要一个新功能,因为你习惯了它,并不总是记住它是一个python3功能
    • 忘记删除未使用的功能导入。请注意,这通常需要审核整个文件,以确保您不需要功能。

放入所有导入总是让你编写类似python3的代码,这意味着你不必完全记住特定文件中的开/关功能。你只需编写python3。

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

首选解决方案的另一个原因是IDE通常提供了一种为新文件指定模板的方法,这意味着您甚至不必记住自己添加所有导入,IDE将为此做到你。


这种推理只有一个问题:添加导入不会破坏代码。 这显然不能保证。但是,您必须进行的更改应该是为python3移植软件,因此不应增加移植软件所需的时间。