1. ホーム
  2. python

[解決済み] Pythonにおける循環的なインポート

2022-03-21 08:25:34

質問

2つのモジュールが互いにインポートしあうとどうなりますか?

この問題を一般化するために、Pythonの循環的なインポートはどうでしょうか?

どのように解決するのか?

で、この件に関してとても良い議論がありました。 comp.lang.python 昨年 あなたの質問に徹底的に答えています。

<ブロッククオート

輸入は実に簡単です。ただ、次のことを忘れないでください。

'import' と 'from xxx import yyy' は実行可能な文です。これらは 実行中のプログラムがその行に到達したとき

モジュールがsys.modulesにない場合、importは新しいモジュールを作成します。 のエントリーを作成し、そのモジュールに含まれるコードを実行します。これは は、実行が完了するまで呼び出し元のモジュールに制御を戻します。

モジュールがsys.modulesに存在する場合、importは単にそのモジュールを返します。 の実行が終了しているか否かにかかわらず。これが 循環的なインポートでは、部分的に空になったように見えるモジュールを返すことがあります。

最後に、実行中のスクリプトは __main__ という名前のモジュールで実行されます。 とは無関係の新しいモジュールが作成されます。 __main__.

これらのことを考慮すれば、インポートする際に驚くことはないはずです。 モジュールになります。