it-swarm-ja.tech

Pythonソースコードを読み始めたい。どこから始めればよいか

Pythonソースコードを読み始めます。

私の経験、

私はPythonおよびJavaをよく知っています。他の言語もさまざまなレベルの熟練度で知っていますが、C/C + /は特によくわかりません。Cを大学ですが、専門的にプログラムされたことはありません。

このコードを読んだ理由.

  1. pythonが内部でどのように機能するかを理解します。
  2. Cをもっと学びましょう。

1は2よりも私にとって重要です。

これについてどうすればいいですか?

73
agiliq

Python C APIについて学ぶことから始めます。これは大きくて豊富なAPIであり、Pythonソースは、どこでも自然に使用します。 Py_INCREFなどが何を意味するのかを理解する必要がある前に、Pythonソースコードにそれほど深く入り込むことはありません。

私はPyconでAPIを説明するプレゼンテーションを行いました: Python C拡張機能によるWhirlwindエクスカーション C拡張機能は、Pythonコード自体と同じAPIを使用します。

44
Ned Batchelder

まず、1に最も興味がある場合は、さまざまなモジュールのPythonソース)を読むことから始めます(Cに直接ジャンプしないでください)。いくつかのモジュール、私は常にPythonプログラミングについて新しいことを学びました。

第二に、もしあなたがCをもっとよく学ぼうとしているなら、私は個人的に完全に異なる何かを提案します:その中のプログラムです。ソースコードを静的に読み取るだけでnot Cをよりよく理解できるようになります(または、少なくとも、これは限られたアプローチですが、少しはよくなるかもしれませんが、ソースを読み取るだけで十分です。 )。

Cで少なくとも適度なサイズのプロジェクトをプログラミングした後、then Pythonソースを調べ始めます。これが、Cをよりよく知る唯一の方法です。 PythonのCソースを読んでも、Cをよく知らなくても、それほど遠くまでは行かないと思います。

Cプロジェクトのアイデア

実際、ここにCプロジェクトのアイデアがあります:CでPythonインタープリターを作成します。明らかに、完成に近づくことすらありません。これはかなり難しいプロジェクトですが、言語の一部に焦点を当てるのは良い考えだと思います。

Cを学ぶのに役立つだけでなく、Pythonよりもはるかに理解しやすくなりますbeforeソースを見る:より深い理解が必要になりますlot Pythonのものの場合、Pythonがどのように機能するかなどの設計トレードオフを理解します。

次に、最終的にPythonのコードを読んだとき、なぜそのように機能するのかを理解するだけでなく、問題を解決する本当に素晴らしいCのテクニックをたくさん学ぶことになるでしょう。

22
Edan Maor

1)まず、独自のPython=をビルドしてデバッガーで実行できることを確認します。これにより、印刷式を追加できるだけでなく、ポイントでブレークしてコードフローを追跡することもできます。ツールlがある場合関数呼び出しを追跡できるようにします。完璧です。

2)データ型を実装するファイルから始めます。それらは非常に理解しやすく、コードを読んでいる間にC言語言語のスキルを向上させることができます。

3)UML図を作成する-Argo UMLやMS Visioのようなシンプルな描画ヘルパーツールがここで役立ちます。コードフローを書き留めます。

4)Pythonの起動コードを読み取ります。基本インフラストラクチャが何をどのように初期化するかを確認します。

6)Python side 100%-より難しい実装の詳細、ASTとは何か、そしてバインドされているメソッドとバインドされていないメソッドとは何か、そしてどのようにpythonインタープリターをどのように書くかを念頭に置いたモデルがある場合、最後のマスターステップに進むことができます。

7)提供されている高速デバッガーC APIを使用して、デバッガー拡張機能を記述します。これは、Cスキルの向上に役立ちます。

8)最後のマスターステップを実行し、インタープリターコードの中心に飛び込みます。これは、熟練したCプログラマにとっては読みにくく、理解するのも困難です。式がどのように評価され、メソッドのルックアップがキャッシュされ、フレームがスコープルールなどに設定されるかを読んでください。複雑さとコードの行に関しては、難しく複雑です。

9)Adobe Photoshopを起動し、見栄えの良い「Master of Python」の卒業証書を作成して、オフィスの壁に貼り付けます。

15
Lothar

source をPython Webサイトからダウンロードします。ソースをPython-3.1.1という名前のディレクトリに解凍したとします。 Pythonソースコード内の2つの出発点をお勧めします。これらは、内部でPythonがどのように機能するかを調べるのに役立ちます。

  • インタパータから生成されたバイトコードをPython仮想マシンが実行する方法を調べます。 Python VMは、Python-3.1.1/Python/ceval.cという名前のファイルにあります。 VMの中核は、ceval.cの関数PyEval_EvalFrameExで始まるevalループです。ソースとインラインコメントを読みます。きっと楽しんでいただけると思います。

  • 別のオプションは、リスト、辞書、セットなどの組み込みpythonデータ型がどのように実装されているかを確認することです。たとえば、インスタンスセットはPython-3.1.1/Objects/setobject.cに実装されています。 Objectsディレクトリには、他のデータ型の実装も含まれています。

12
ardsrk

質問はかなり幅広いので、私は python source をダウンロードしてくだらないことをするのが最良の答えだと思います。 pythonあなたがよく知っているモジュールまたはセクションを選んで、内部の内容を確認してください。

5
Mizipzor