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で読むことができます。ただし、質問の主要部分であるステートメントとインポートモジュールの関係には実際には関係ありません。importsys
少し混乱している 2 つのフェーズがあります。
Python は、インポートする実際のファイル (コードを含む) を見つけて、解析し、実行して、どこかに保存する必要があります。
次に、インポートされたモジュールの名前をモジュール オブジェクトにローカルにバインドする必要があります。
つまり、「モジュールを見つけてモジュールオブジェクトに変換する」というプロセスは、「モジュールを意味するようsysに変数を定義する」というプロセスと同じではありません。sys
を調べると、どのモジュールがロードされているかを確認できますsys.modules。
別の問題として、ディスク上の個別のファイルとして表されるのではなく、実際にはインタープリターにハードコードされている Python の基本がいくつかあります。sysこれらのモジュールの 1 つsys.pyです。ファイルはありません。python.exe代わりに、バイナリに含まれているコンパイル済みの C コードです。