2014-03-29 52 views

回答

3

據我所知沒有任何明確的約定,但我傾向於將它們全部添加到每個文件中。

你可能知道你正在使用什麼__future__功能現在,但如果在今後的文件被修改了什麼,突然需要其他功能或不需要某項功能了嗎?

  • 如果你把所有的文件都放在每個文件上,那麼你已經知道你可以用「python3 style」編寫所有東西,並確保沒有奇怪的錯誤/錯誤發生。如果不使用某個功能,則沒有問題。
  • 如果您還沒有,那麼您有可能:
    • 忘記爲功能添加導入,即使您知道它是必需的。
    • 不知道你實際上需要一個新的功能,因爲你習慣了它,並不總是記住它是一個python3功能
    • 忘記刪除未使用的功能導入。請注意,這通常需要審查整個文件以確保您不需要某項功能。

把所有的進口總是讓你寫的python3樣的代碼,這意味着你不必記住的特點是開/關在一個特定的文件到底是什麼。你只需編寫python3。

另一方面,在選擇要導入的功能時,必須根據文件中活動的功能調整每個文件的編碼方式。

更喜歡第一種解決方案的另一個原因是,IDE通常提供一種方法來指定新文件的模板,這意味着您甚至不必記得自己添加所有的導入,IDE將這樣做爲你。


在這個推理中只有一個問題:添加導入不會破壞代碼。 這顯然不能保證。然而,你必須做的改變應該已經做到了將它們移植到python3軟件中,所以它不應該增加移植軟件所需的時間。

+0

我仍然反對在每個地方添加一個導入導入。一個linter(如flake8)加上unittests可以讓你在忘記添加一個導入時(以及讓它知道它是多餘的時候)做出更好的檢測。 –

相關問題