我应该在项目中的每个文件中添加__future__语句吗?
我正在为一个目前只支持Python 2的项目贡献代码,目的是让它也能在Python 3上运行。我想知道,应该在每个文件里都加上以下的导入语句:
from __future__ import (unicode_literals, print_function,
absolute_imports, division)
还是只在需要的文件里使用呢?
1 个回答
3
据我所知,这方面没有明确的规定,不过我倾向于在每个文件里都加上所有的功能。
你现在可能知道自己在用哪些__future__
功能,但如果将来这个文件被修改了,突然需要其他功能,或者某个功能不再需要了,那该怎么办呢?
- 如果你在每个文件里都加上所有功能,那你就可以确保自己写的代码都是“python3风格”的,而且不会出现奇怪的错误。如果某个功能没有被用到,也没关系。
- 如果不这样做,就有可能出现以下情况:
- 你忘了添加某个功能的导入,尽管你知道它是必须的。
- 你没有意识到其实需要一个新功能,因为你已经习惯了,没时刻记得那是python3的功能。
- 你忘了删除一个不再使用的功能导入。注意,这通常需要你检查整个文件,以确保不再需要某个功能。
把所有的导入都放上去,可以让你写出类似python3的代码,这样你就不需要时刻记住某个文件里具体启用了哪些功能。你只需要写python3的代码。
另一方面,当你选择要导入的功能时,就必须根据文件中启用的功能来调整你的编码方式。
还有一个理由支持第一种做法,那就是大多数IDE(集成开发环境)通常提供一种方式来指定新文件的模板,这样你甚至不需要记得自己添加所有的导入,IDE会帮你处理这些。
不过,这种思路有一个前提:添加这些导入不会破坏代码。这显然是没有保证的。然而,你需要做的更改,应该都是为了将软件迁移到python3而做的,所以这不应该增加迁移软件所需的时间。