193

組み込み関数が Python でどのように機能するかを確認する方法はありますか? それらの使用方法だけでなく、それらがどのように構築されたか、ソートまたは列挙などの背後にあるコードは何ですか...?

4

8 に答える 8

183

Python はオープン ソースなので、ソース コードを読むことができます。

特定のモジュールまたは関数がどのファイルに実装されているかを調べるには、通常、__file__属性を出力できます。inspectまたは、モジュールを使用することもできます。のドキュメントの「ソース コードの取得inspect」セクションを参照してください。

組み込みのクラスとメソッドの場合、オブジェクトが組み込みであることを示す型エラーが返されるためinspect.getfile、これはそれほど単純ではありません。inspect.getsourceただし、組み込み型の多くはObjects、Python ソースのトランクのサブディレクトリにあります。たとえば、enumerate クラスの実装についてはこちらを、型の実装についてはこちらlistを参照してください。

于 2011-12-22T19:06:01.147 に答える
42

@Chris の回答を補足するクックブックの回答を次に示します。CPythonは GitHub に移動し、Mercurial リポジトリは更新されなくなります。

  1. 必要に応じて Git をインストールします。
  2. git clone https://github.com/python/cpython.git

  3. コードはcpython->というサブディレクトリにチェックアウトしますcd cpython

  4. print()...の定義を探しているとしましょう。
  5. egrep --color=always -R 'print' | less -R
  6. あはは!参照Python/bltinmodule.c->builtin_print()

楽しみ。

于 2014-11-15T14:56:36.803 に答える
22

iPythonシェルを使用すると、これが簡単にfunction?なります。ドキュメントが提供されます。function??コードも示します。しかし、これは純粋な python 関数に対してのみ機能します。

その後、いつでも(c)Python のソース コードをダウンロードできます。

コア機能の Pythonic 実装に興味がある場合は、PyPyソースを参照してください。

于 2011-12-22T19:10:35.803 に答える
8

まったく知られていないリソースは Python Developer Guideです。

(やや) 最近の GH issueに、あなたが求めている質問に対処するための新しい章が追加されました: CPython Source Code Layout。何かが変更されると、そのリソースも更新されます。

于 2018-01-06T09:56:00.480 に答える