組み込み関数が Python でどのように機能するかを確認する方法はありますか? それらの使用方法だけでなく、それらがどのように構築されたか、ソートまたは列挙などの背後にあるコードは何ですか...?
8 に答える
Python はオープン ソースなので、ソース コードを読むことができます。
特定のモジュールまたは関数がどのファイルに実装されているかを調べるには、通常、__file__
属性を出力できます。inspect
または、モジュールを使用することもできます。のドキュメントの「ソース コードの取得inspect
」セクションを参照してください。
組み込みのクラスとメソッドの場合、オブジェクトが組み込みであることを示す型エラーが返されるためinspect.getfile
、これはそれほど単純ではありません。inspect.getsource
ただし、組み込み型の多くはObjects
、Python ソースのトランクのサブディレクトリにあります。たとえば、enumerate クラスの実装についてはこちらを、型の実装についてはこちらlist
を参照してください。
@Chris の回答を補足するクックブックの回答を次に示します。CPythonは GitHub に移動し、Mercurial リポジトリは更新されなくなります。
- 必要に応じて Git をインストールします。
git clone https://github.com/python/cpython.git
コードは
cpython
->というサブディレクトリにチェックアウトしますcd cpython
print()
...の定義を探しているとしましょう。egrep --color=always -R 'print' | less -R
- あはは!参照
Python/bltinmodule.c
->builtin_print()
楽しみ。
iPythonシェルを使用すると、これが簡単にfunction?
なります。ドキュメントが提供されます。function??
コードも示します。しかし、これは純粋な python 関数に対してのみ機能します。
その後、いつでも(c)Python のソース コードをダウンロードできます。
コア機能の Pythonic 実装に興味がある場合は、PyPyソースを参照してください。
まったく知られていないリソースは Python Developer Guideです。
(やや) 最近の GH issueに、あなたが求めている質問に対処するための新しい章が追加されました: CPython Source Code Layout。何かが変更されると、そのリソースも更新されます。