web-dev-qa-db-ja.com

Pythonの内部について詳しく知るにはどうすればよいですか?

私はPythonを使用して半年以上プログラミングしていますが、Pythonを使用するよりもPython内部に興味を持っています。現在、Python2からPython3へのいくつかのライブラリの移植に取り組んでいます。ただし、ほとんどの変更はPython2.xの設計の問題に対応しているため、Python2からPython3に移植する方法についてはかなり抽象的な見方があります。

Python internalsについて詳しく知りたい。トップダウンとボトムアップのどちらのアプローチを取るべきですか?おすすめの参考資料はありますか?

52
user277465

内部ではなく、言語の設計の背後にある理論的根拠についてもっと知りたいようです。私にとって「内部」とは、オブジェクトがメモリ内でどのように配置されるか、参照カウントがどのように機能するかなどを意味します。

設計上の決定をより深く理解したい場合は、 PEP を読んでみてください。これらは言語の変更に関する提案であり、多くの場合、変更の理由、拒否された代替案などの詳細な議論。拒否されたPEPも、言語を形成した考え方を示しているため、有用です。

例えば:

等々..

Pythonの内部について本当に学びたい場合は、Python自体のビルドに使用されるPython C APIについて読むことから始めてください。私の話 Python C拡張機能 によるWhirlwindエクスカーションは、開始する1つの場所です。次に、Pythonソースコード自体を調べて、学習する必要のあるものすべてを探します。

35
Ned Batchelder

関連リンクまたは検索からこの質問に出くわした人には、 Python Internals にYaniv Akninと書かれたドキュメントがあります。それはゼロから始まり、非常に読みやすいです。

15
Senthil Kumaran

Yaniv AkninのPythons Innardsシリーズ のシリーズも素晴らしい

Planet Python のおかげで発見しました

this SO thread のTryPyPyの回答にも興味があるかもしれません

5
eyquem

Python 3.の What's New )ドキュメントを最初に読みます。詳細な変更。

また、「python 3への移植」など」を検索することもできます。優れたリソースとツールがたくさんあります。

新しくて見つけにくいツールの1つは、ベンジャミンピーターソンによる six です。 Python 2 * 3ギャップにわたって互換性のあるコードの記述を可能にします。

Python 2とPython 3-互換性のあるコードの維持に関して最も困難であると感じたのは、デプロイメントでした。問題なく動作するコードを書くことができましたが、パッケージとデプロイを行いましたが、いつ変換が発生するかは不明でした。最終的にdistutilsコマンドを見つけましたbuild_py_2_to_3それでうまくいくでしょう。このコマンドをsetup.pyで使用することで、Python 2またはPython 3. はjaraco.utilにあります。

内部についても質問しました。本当に内部を取得したい場合は、 Python 2.x および Python 3のソースを表示できます。 .x 、正直なところ、チュートリアルと、おそらくPython libs。

2
Jason R. Coombs

トップダウンとボトムアップのどちらのアプローチを取るべきですか?

両方とも!真剣に。

1
Paul D. Waite

これを試しましたか?

0
ssoler