PEP 8は言う:
- インポートは常に、ファイルの先頭、モジュールのコメントとドキュメント文字列の直後、モジュールのグローバルと定数の前に配置されます。
職業上、私はPEP 8に違反しています。時々、関数内にデータをインポートします。原則として、単一の関数内でのみ使用されるインポートがある場合にこれを行います。
意見はありますか?
編集(関数にインポートするのが良い考えである理由):
主な理由:コードをより明確にすることができます。
- 関数のコードを見るとき、「関数/クラスxxxとは何ですか?」(xxxは関数内で使用されています)。すべてのインポートがモジュールの上部にある場合、そこに行ってxxxが何かを判断する必要があります。これは、を使用する場合の問題
from m import xxx
です。m.xxx
関数内を見ると、おそらくもっとわかります。何に依存しm
ます:よく知られているトップレベルのモジュール/パッケージ(import m
)ですか?それともサブモジュール/パッケージ(from a.b.c import m
)ですか? - 場合によっては、xxxが使用されている場所の近くに追加情報(「What is xxx?」)があると、機能が理解しやすくなります。