8
我貢獻代碼到目前只有2 Python的項目,以允許它在Python 3下運行我應該把下面的導入:我應該在項目的每個文件中添加__future__語句嗎?
from __future__ import (unicode_literals, print_function,
absolute_imports, division)
上的每個文件的項目,或只是用我需要的那些每個文件?
我貢獻代碼到目前只有2 Python的項目,以允許它在Python 3下運行我應該把下面的導入:我應該在項目的每個文件中添加__future__語句嗎?
from __future__ import (unicode_literals, print_function,
absolute_imports, division)
上的每個文件的項目,或只是用我需要的那些每個文件?
據我所知沒有任何明確的約定,但我傾向於將它們全部添加到每個文件中。
你可能知道你正在使用什麼__future__
功能現在,但如果在今後的文件被修改了什麼,突然需要其他功能或不需要某項功能了嗎?
把所有的進口總是讓你寫的python3樣的代碼,這意味着你不必記住的特點是開/關在一個特定的文件到底是什麼。你只需編寫python3。
另一方面,在選擇要導入的功能時,必須根據文件中活動的功能調整每個文件的編碼方式。
更喜歡第一種解決方案的另一個原因是,IDE通常提供一種方法來指定新文件的模板,這意味着您甚至不必記得自己添加所有的導入,IDE將這樣做爲你。
在這個推理中只有一個問題:添加導入不會破壞代碼。 這顯然不能保證。然而,你必須做的改變應該已經做到了將它們移植到python3軟件中,所以它不應該增加移植軟件所需的時間。
我仍然反對在每個地方添加一個導入導入。一個linter(如flake8)加上unittests可以讓你在忘記添加一個導入時(以及讓它知道它是多餘的時候)做出更好的檢測。 –