3

重複の可能性:
Python モジュール ソースの場所を見つけるにはどうすればよいですか?

組み込みの python モジュールのコードの読み方がわかりません。たとえば、モジュール内の内容を見つける方法を知っています。

import os;

dir(os)

しかし、たとえば関数を探しようとすると、実際に何をするlistdirのかを読むことができません。def listdir

4

1 に答える 1

5

一言:検査します。

inspect モジュールは、モジュール、クラス、メソッド、関数、トレースバック、フレーム オブジェクト、コード オブジェクトなどのライブ オブジェクトに関する情報を取得するのに役立ついくつかの便利な関数を提供します。たとえば、クラスの内容を調べたり、メソッドのソース コードを取得したり、関数の引数リストを抽出してフォーマットしたり、詳細なトレースバックを表示するために必要なすべての情報を取得したりするのに役立ちます。

これは標準ライブラリにあり、ドキュメントには例があります。だから、あなたはただprint(inspect.getsource(os))、またはするinspect.getsourcefile(os)、など.

getsourcefile一部の標準ライブラリ モジュールは C で記述されている(またはインタープリターに組み込まれた偽のモジュールでさえある) ことに注意してくださいgetfile。たとえば、Python ソース コードのコピーの元の C ソース。.so.pyd

と入力することもできます。上部help(os)FILE右側にパスが表示されます (通常はgetsourcefilePython モジュールと同じですが、getfileそれ以外は同じです)。

また、いつでもPython モジュールC 拡張モジュールのオンライン ソースにアクセスできます。URL の「2.7」を「3.3」などに変更するだけで、異なるバージョンを取得できます。(バージョンを完全に削除すると、現在 3.4 プレアルファに対応するトランク コードが得られると思いますが、それについては引用しないでください。)

os.listdir関数は実際には で直接定義されていませんos。効果的にfrom <platform-specific-module> import *インポートされます。いくつかの手順を自分で追跡できますが、通常posix_listdirposixmodule.cほとんどのプラットフォームに含まれています. (Windows でさえ、最近のバージョンでは、同じファイルを使用して、posixWindows 以外でモジュールを定義し、Windows で と モジュールntを定義しており、コードにposixはたくさんの#if defined(…)ものがあります。)

于 2012-12-14T23:48:28.723 に答える