組み込みの python モジュールのコードの読み方がわかりません。たとえば、モジュール内の内容を見つける方法を知っています。
import os;
dir(os)
しかし、たとえば関数を探しようとすると、実際に何をするlistdir
のかを読むことができません。def listdir
組み込みの python モジュールのコードの読み方がわかりません。たとえば、モジュール内の内容を見つける方法を知っています。
import os;
dir(os)
しかし、たとえば関数を探しようとすると、実際に何をするlistdir
のかを読むことができません。def listdir
一言:検査します。
inspect モジュールは、モジュール、クラス、メソッド、関数、トレースバック、フレーム オブジェクト、コード オブジェクトなどのライブ オブジェクトに関する情報を取得するのに役立ついくつかの便利な関数を提供します。たとえば、クラスの内容を調べたり、メソッドのソース コードを取得したり、関数の引数リストを抽出してフォーマットしたり、詳細なトレースバックを表示するために必要なすべての情報を取得したりするのに役立ちます。
これは標準ライブラリにあり、ドキュメントには例があります。だから、あなたはただprint(inspect.getsource(os))
、またはするinspect.getsourcefile(os)
、など.
getsourcefile
一部の標準ライブラリ モジュールは C で記述されている(またはインタープリターに組み込まれた偽のモジュールでさえある) ことに注意してくださいgetfile
。たとえば、Python ソース コードのコピーの元の C ソース。.so
.pyd
と入力することもできます。上部help(os)
のFILE
右側にパスが表示されます (通常はgetsourcefile
Python モジュールと同じですが、getfile
それ以外は同じです)。
また、いつでもPython モジュールとC 拡張モジュールのオンライン ソースにアクセスできます。URL の「2.7」を「3.3」などに変更するだけで、異なるバージョンを取得できます。(バージョンを完全に削除すると、現在 3.4 プレアルファに対応するトランク コードが得られると思いますが、それについては引用しないでください。)
os.listdir
関数は実際には で直接定義されていませんos
。効果的にfrom <platform-specific-module> import *
インポートされます。いくつかの手順を自分で追跡できますが、通常posix_listdir
、posixmodule.c
ほとんどのプラットフォームに含まれています. (Windows でさえ、最近のバージョンでは、同じファイルを使用して、posix
Windows 以外でモジュールを定義し、Windows で と モジュールnt
を定義しており、コードにposix
はたくさんの#if defined(…)
ものがあります。)