Python で 'import' ステートメントがどのように機能するかについて頭を悩ませることはできません。
によって返されたディレクトリでパッケージを検索すると言われていますsys.path()
。ただし、sys
モジュールがすべての Python プログラムで自動的に使用可能になったとしても、自動的にインポートされるわけではありません。では、import
ステートメントは内部sys
でモジュールをインポートしますか?
Python で 'import' ステートメントがどのように機能するかについて頭を悩ませることはできません。
によって返されたディレクトリでパッケージを検索すると言われていますsys.path()
。ただし、sys
モジュールがすべての Python プログラムで自動的に使用可能になったとしても、自動的にインポートされるわけではありません。では、import
ステートメントは内部sys
でモジュールをインポートしますか?
sys
モジュールとimport
ステートメント - 別名。「鶏か卵か?」sys
モジュールのドキュメントがすべてを語っていると思います:
このモジュールは、インタープリターによって使用または維持されるいくつかの変数と、インタープリターと強く相互作用する関数へのアクセスを提供します。いつでもご利用いただけます。
つまり、簡単に言い換えると、インタープリターには、モジュールを使用してアクセスできる変数がいくつかありsys
ます-sys.path
はそのような変数の 1 つです。
import
仕組み「ステートメントの仕組み」については、http: //docs.python.org/2/reference/simple_stmts.html#importimport
で読むことができます。ただし、質問の主要部分であるステートメントとインポートモジュールの関係には実際には関係ありません。import
sys
少し混乱している 2 つのフェーズがあります。
Python は、インポートする実際のファイル (コードを含む) を見つけて、解析し、実行して、どこかに保存する必要があります。
次に、インポートされたモジュールの名前をモジュール オブジェクトにローカルにバインドする必要があります。
つまり、「モジュールを見つけてモジュールオブジェクトに変換する」というプロセスは、「モジュールを意味するようsys
に変数を定義する」というプロセスと同じではありません。sys
を調べると、どのモジュールがロードされているかを確認できますsys.modules
。
別の問題として、ディスク上の個別のファイルとして表されるのではなく、実際にはインタープリターにハードコードされている Python の基本がいくつかあります。sys
これらのモジュールの 1 つsys.py
です。ファイルはありません。python.exe
代わりに、バイナリに含まれているコンパイル済みの C コードです。