56

私は Python を使ってプログラミングを始めて半年強になりますが、Python を使ってアプリケーションを開発するよりも、Python の内部構造に興味があります。現在、いくつかのライブラリを Python2 から Python3 に移植する作業を行っています。ただし、ほとんどの変更は Python2.x の設計上の問題を扱っているため、Python2 から Python3 へのポートの作成方法についてはかなり抽象的な見方をしています。

Python の内部構造についてもっと知りたいです。トップダウンとボトムアップのどちらを採用するべきか? お勧めの参考書はありますか?

4

6 に答える 6

41

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

設計上の決定についてより深く理解したい場合は、PEPを読んでみてください。PEPは言語の変更の提案であり、変更の理由、拒否された代替案などの詳細な説明が含まれていることがよくあります。拒否されたPEPでさえ、言語を形作った考え方を示しているので便利です。

例えば:

等々..

Pythonの内部について本当に学びたい場合は、Python自体を構築するために使用されるPythonCAPIについて読むことから始めます。私の話「PythonC拡張機能による旋風エクスカーション」から始めることができます。次に、Pythonソースコード自体に飛び込んで、学習する必要があることをすべて確認できます。

于 2010-07-21T11:33:57.943 に答える
15

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

于 2011-05-09T04:17:26.790 に答える
5

Yaniv Aknin の Pythons Innards シリーズ も素晴らしいと思います。

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

.

このSOスレッドのTryPyPyの回答にも興味があるかもしれません

于 2011-05-09T06:48:31.590 に答える
2

私は最初にPython3の新機能ドキュメントを読みます。これは、優れた高レベルの概要を示し、詳細な変更に触れています。

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

新しくて見つけるのが難しいツールの1つは、BenjaminPetersonによる6つです。Python 2*3のギャップを越えて互換性のあるコードを書くことができます。

Python2およびPython3と互換性のあるコードを維持する上で最も難しいと感じたのは、デプロイメントでした。正常に実行されるコードを記述できましたが、パッケージ化してデプロイしたときに、変換がいつ行われるべきかが明確ではありませんでした。build_py_2_to_3私は最終的に、そのトリックを実行するdistutilsコマンドを見つけました。setup.pyでそのコマンドを使用することで、Python2またはPython3のいずれかにデプロイされるソースディストリビューションをリリースできます。はjaraco.utilにあります。

内部についても質問しました。本当に内部を知りたい場合は、Python2.xとPython3.xソースを表示できますが、正直なところ、チュートリアルとPythonライブラリの.pyファイルの一部を読み続けることにします。

于 2010-07-21T11:22:19.203 に答える
1

トップダウンまたはボトムアップのアプローチを採用する必要がありますか?

両方!真剣に。

于 2010-07-21T13:09:13.570 に答える
0

これを試しましたか?

于 2010-07-21T11:22:19.117 に答える