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