2

モジュールをインポートすると、その関数とメソッド、およびそれらの関数とメソッドもインポートされることに気付きました。上位レベルのモジュールをインポートするときに、Pythonがインポートするレベルの数に設定されたルールはありますか?

編集

申し訳ありませんが、これまでのところ、いくつかの依存関係の複数のインポートについての回答に誤解されていると思います。ネストされたフォルダーを考えています。たとえば、djangoでは、djangoをインポートすると、django.contrib.authにアクセスできますが、具体的にインポートしない限り、django.contrib.auth.viewsにアクセスすることはできません。そのような場合は常に2レベル下にあるのだろうかと思っていました

2番目の編集

もう一度明確にするために..djangoの例では、レイアウトは/django/contrib/auth/views.pyです。ここで、各サブフォルダーには「init .py」があり、モジュールになっています。いずれも「すべて」の属性を定義していません。 。ドット構文を使用してモジュール指定フォルダー内のファイルに移動できない可能性があるため、私の例は悪いですか?

4

3 に答える 3

3

いいえ、python はインポートする必要があるものをインポートします。ただし、各モジュールは一度だけインポートされます。たとえば、あるモジュールが sys をインポートし、別のモジュールが sys をインポートする場合、物理的に 2 回実行することはありません。

于 2010-06-29T17:23:56.670 に答える
1

定義済みのインポート深度レベルはありません。import ステートメントは、他の python ステートメントと同様に実行されます。

しかし、循環はどのように回避されるのでしょうか? モジュールは、最初にインポートされたときに sys.modules に追加されます (つまり、キャッシュされます)。これは、インポート ステートメントが実行されたときに最初に調べられる場所です。そのため、各モジュールは 1 回だけロードされますが、多くの import ステートメントに表示される場合があります。

于 2010-06-29T17:35:10.560 に答える
1

あまり。モジュールは、そのモジュールでそれらを使用する必要があるため、他のモジュールからのものをインポートします。そうしないと、壊れます。

于 2010-06-29T17:22:27.203 に答える