ホームページ >バックエンド開発 >Python チュートリアル >Python での循環インポートを回避または管理するにはどうすればよいですか?

Python での循環インポートを回避または管理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-20 02:32:09278ブラウズ

How Can Circular Imports in Python Be Avoided or Managed?

相互インポートまたは循環インポートに関する問題

Python の 2 つのモジュールが相互にインポートしようとすると、一見期待どおりの結果がインポートの成功となります。 。ただし、複数のモジュールが周期的なインポートを試行するシナリオでは、複雑な問題が発生します。

直接インポートとインポートからのインポート

直接インポートを試行した場合 (例: import foo in bar. py と foo.py の import bar) を使用すると、通常、インポートは正常に実行されます。コードの実行が開始されるまでに、両方のモジュールがロードされ、相互参照が確立されます。

この問題は、「from」インポートが使用される場合に発生します (例: from foo import abc および from bar import xyz)。このような場合、各モジュールは、それ自身のインポートの前に、他のモジュールがすでにインポートされている必要があります。これによりデッドロックが発生します。

Python での循環インポートの作業

循環インポートの問題が発生する可能性があるにもかかわらず、問題が発生しない場合もあります。特定の Python バージョンの例は次のとおりです。

  • Python 2: モジュールの先頭での直接インポート
  • Python 3:

    • 上部の直接インポートまたは相対「from」インポートモジュールの
    • モジュールの下部に明示的にインポートされた属性を持つ直接インポートまたは非相対「from」インポート

その他の考慮事項

Star インポート (例: from foo import *) では、さらに詳細な情報を導入できます。以下の参考文献でカバーされていない合併症。

以上がPython での循環インポートを回避または管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。