私は素晴らしいpythonツイストチュートリアルhttp://krondo.com/?page_id=1327少し混乱を読んでいます。多くの例では、最初ではなくpythonファイルにツイストリアクターまたは他のモジュールを複数回インポートしています。Python の方法では、ファイルの先頭でインポート モジュールを使用するためです。誰でも詳しく説明できます。
1 に答える
一般的に、あなたは正しいです-ほとんどの言語のようにPythonでは、モジュール内の関連するインポートステートメントは、それらが簡単に見つかるモジュールの先頭にある必要があります。ほとんどの場合、それが望ましいので、それが教えられています。
ただし、ほとんどのルールと同様に、例外があります。Pythonでは、関数とクラスの定義内、およびモジュールレベルでステートメントをインポートできます。関数内にインポートを配置する理由の1つは、一部のインポートは実際にはかなり高価で時間のかかる操作になる可能性があることです。
Twistedの場合from twisted.internet import reactor
、舞台裏で多くの余分な作業と魔法が行われています。したがって、実際に必要になるまでインポートを延期する方が理にかなっています。できれば、1回だけ(またはまれに)呼び出される関数内でインポートを延期することをお勧めします。Twisted(前述の「魔法」)に固有のもう1つの理由は、インポートするという行為reactor
自体がそのオブジェクトのシングルトンインスタンスを作成し、他のコードがreactorインスタンスの作成方法に影響を与える可能性があることです。そのため、他のセットアップコードが実行されるまで、reactorのインポートを延期します。
これらの種類のインラインインポートを使用する必要がある場合がある最後の理由の1つは、循環インポートの問題です。質問がない限り、ここでは詳しく説明しませんが、このサイトでその問題に関する他の議論を見つけることができると思います。