2016-11-05 15 views
0

Python(CPython)ではモジュール import moduleをインポートできます。モジュールは*.pyファイル(Pythonコード)またはモジュールはC/C++(拡張Python)で書かれたモジュールにすることができます。したがって、このようなモジュールはコンパイルされたオブジェクトファイル(Unixでは*.so/*.oなど)です。C/C++モジュール対Pythonモジュール。

私はそれがインタプリタによってどのように正確に実行されているか知っています。

私は、Pythonモジュールがバイトコードにコンパイルされ、それが解釈されると思います。 C/C++モジュールの場合、そのようなモジュールからの関数はただ実行されます。したがって、アドレスにジャンプして実行を開始してください。

私が間違っている場合は私を修正してください/もっと言いなさい。

+0

根本的な仕組みを知りたい実用的な理由があるのなら、私は興味がありますか? – Evert

+0

私は内部についての知識がより良いプログラマであることを容易にすると確信していますが、どう思いますか? – Gilgamesz

答えて

3

C拡張をインポートすると、Pythonはプラットフォームの共有ライブラリローダーを使用してライブラリをロードし、次にライブラリ内の関数にジャンプします。しかし、ライブラリをロードしたり、このような関数にジャンプすることはできません。これは、Pythonをサポートするために特に実装されたlibs、およびPythonオブジェクトとしてライブラリによってエクスポートされる関数でのみ機能します。 libはPythonオブジェクトを理解し、それらのオブジェクトを使って通信する必要があります。

また、インポートする代わりに、​​のような外部関数ライブラリを使用してライブラリをロードし、データをCビューのデータに変換して呼び出しを行うことができます。