3

私はまだPythonを学んでいて、pygameで遊んだ後、インポートしているモジュールで、すでにインポートしたものを再インポートしていることに気付きました。

import pygame

たとえば、別のファイルにいくつかのクラスがありますが、それらを機能させるには、pygameもそのファイルにインポートする必要があります。実際にコードを2回インポートしますか?プログラムの速度が低下しますか?または、キャッシュから同じインポートをプルするだけですか?それでも、それを行う場合、なぜ再度インポートする必要があるのでしょうか?

メインファイルの一部であるかのようにコードをプルするだけのlispの(load)のようなものはありますか?

ありがとうございました

4

3 に答える 3

2

後続のインポートは、キャッシュされたモジュール参照をからプルしますsys.modules。モジュールを現在の名前空間/スコープに追加するには、インポートする必要があります。

于 2010-05-29T17:50:00.647 に答える
2

Pythonがモジュールをインポートするとき、最初にモジュールレジストリ(sys.modules)をチェックして、モジュールがすでにインポートされているかどうかを確認します。その場合、Pythonは既存のモジュールオブジェクトをそのまま使用します。

于 2010-05-29T17:50:40.727 に答える
0

とった!
さて、私は探していたものを見つけました。すでにインポートしたコードを再インポートする必要があるのは不格好だと思いました。特に、ファイルがライブラリなどではない場合は、コードを分割するだけです。ここで見つけました:http://norvig.com/python-lisp.html

execfile("file.py")

私の問題に完全に答えます。ファイルを解析し、その中のコードを実行します。それを使用して、余分なインポートステートメントを取り出すことができ、完全に実行されます:D

于 2010-05-29T18:01:22.773 に答える