パイソン:メイン プログラムと PEP 8 の先頭でインポート
質問
の PEP8 プログラムの先頭でモジュールをインポートすることをお勧めします。
今、私はそれらのいくつかを最初にインポートしていると感じています 主要 プログラム(つまり、 if __name__ == '__main__'
)理にかなっています。たとえば、メインプログラムがコマンドラインから引数を読み取る場合、私は次のようにする傾向があります。 import sys
の初めに 主要 プログラム:こちらです、 sys
コードがモジュールとして使用される場合は、コマンド ライン引数にアクセスする必要がないため、インポートする必要はありません。
これは PEP 8 に対するどの程度の違反ですか?これは控えたほうがいいでしょうか?それともPEP 8を修正するのが合理的でしょうか?
解決
私は本当にこれが何をどのように悪いあなたを伝えることはできません。
しかし、私は最初の使用時に特定のライブラリをインポートすることによって、Webアプリケーションのための大幅に改善された性能(応答時間、負荷)をしました。
ところで、以下がPEP 8からもあります:
しかし、最も重要なのは:であることを知っているとき 矛盾 - 時々スタイル ガイドは、ちょうど適用されません。ときで 疑問は、あなたの最良の判断を使用しています。ルック 他の例では、何を決めます 最もよく似合います。そして、することを躊躇しません 頼む!
他のヒント
一般的には私が必要とされないかもしれないモジュールの後半に輸入に多くの害はないと思う。
しかし、私は間違いなくトップで、早期の輸入でしょうsys
。それは非常に可能性の高いあなたが他の場所であなたのスクリプトではなく予告それは常にインポートされていないということのsysを使用する場合がありますことを、このような共通モジュールです。あなたは(SYSの多くのスタートアップがとにかくありますないこと)インポートを回避することにより、任意のモジュールの起動時間を節約していないのでsys
は、またいつものPython自体によってロードされるモジュールの一つです。
私はあなたの懸念についてのPEPで何もない場合に最も適切であると感じ何をするためにあなたをお勧めします。
のsysをインポートすると、本当に私はそれを心配だろうと長いことになりません。一部のモジュールは長いしかし取りますか。 私は、sysが、実際には非常に多くの名前空間を詰まらないと思います。私は関係なく、SYSという変数やクラスを使用することはありません。
あなたは一番上にそれを持って、効果よりも害をやっていると考えられる場合は、、すべての手段によってそれはしかし、あなたが好きです。 PEP 8は、あなたが見るだけで、ガイドラインとコードの多くは、それに準拠していないです。
問題はパフォーマンスではありません。
問題は明確さです。
あなたの「メイン」プログラムは、今日では単なるメインプログラムです。明日は、それはより高いレベルのメインプログラムに含まれるライブラリになるかもしれません。後で、それはより大きなパッケージ内の単なる 1 つのモジュールになります。
「メイン」プログラムの動作が変わる可能性があるため、応答は 2 つあります。
内部の「主要な」ものを分離する
if __name__ == "__main__"
. 。これは、PEP-8 に対するグロテスクな違反ではありません。これは物を梱包する合理的な方法です。「メイン」プログラム スクリプト内の機能の数を制限するようにしてください。それらを抑えるようにしてください
import
とif __name__ == "__main__"
もの。メインスクリプトが小さい場合、インポートに関する質問はなくなります。