52 votes

Comment puis-je en savoir plus sur les composants internes de Python?

J'ai été la programmation à l'aide de Python pour un peu plus de la moitié d'un an maintenant et je suis plus intéressé dans Python internes plutôt que d'utiliser Python pour développer des applications. Actuellement je travaille sur le portage de quelques bibliothèques de Python2 pour Python3. Cependant, j'ai une assez abstrait vue sur la façon de faire du port de trucs, de Python2 pour Python3 comme la plupart des changements de traiter des problèmes de conception en Python2.x

J'aimerais en savoir plus à propos de Python internes; dois-je aller pour un top-down ou bottom-up? Existe-il des références que vous pourriez recommander?

35voto

Ned Batchelder Points 128913

On dirait que vous vous voulez en savoir plus sur la justification de la conception de la langue, plutôt que de l'intérieur. "internals" pour moi, c'est des choses comme la façon dont les objets sont disposés en mémoire, comment comptage de référence des œuvres, et ainsi de suite.

Si vous êtes à la recherche pour une meilleure compréhension des décisions de conception, essayez de lire le PEPs: ils sont les propositions de changements à apporter dans la langue, et comprennent souvent des discussions détaillées sur les raisons de ces changements, a rejeté les alternatives, et ainsi de suite. Même les rejetés, les Ppe sont utiles, car elles montrent la pensée qui a façonné la langue.

Par exemple:

et ainsi de suite..

Si vous voulez vraiment apprendre à propos de Python internes, commencez par lire sur le Python API C, qui est utilisé pour construire Python lui-même: mon parler Un Tourbillon, une Excursion à travers Python Extensions C est un endroit pour commencer. Ensuite, vous pouvez plonger dans le code source Python lui-même pour tout ce que vous devez savoir à propos de.

15voto

Senthil Kumaran Points 14934

Pour quelqu'un qui tombe sur cette question à partir de liens ou de recherches connexes, il existe une documentation écrite Yaniv Aknin sur Python Internals . Il part de zéro et est très lisible.

5voto

eyquem Points 9942

Je trouve la série de la série Pythons Innards de Yaniv Aknin fantastique aussi

Je l'ai découvert grâce à Planet Python

.

Vous pouvez également être intéressé par la réponse de TryPyPy dans ce fil SO

2voto

Jason R. Coombs Points 11130

Je voudrais tout d'abord de lire les nouveautés document pour Python 3. Il donne un bon aperçu de haut niveau, et qui concerne le détail des modifications apportées.

Vous pouvez également faire une recherche pour "portage à python 3" ou similaire. Il y a beaucoup de bonnes ressources et des outils.

Un outil nouveau et difficile à trouver est de six, par Benjamin Peterson. Il permet d'écrire du code qui est compatible entre le Python 2*3 écart.

La partie que j'ai trouvé la plus difficile sur le maintien de Python 2 et Python 3 du code compatible est le déploiement. Je pourrais écrire un code qui irait très bien, mais quand je suis allé faire un package et de déployer, il était difficile de savoir quand la conversion devrait se produire. J'ai finalement trouvé un distutils commande build_py_2_to_3 qui ferait l'affaire. En utilisant cette commande dans mon setup.py, j'ai pu libérer une source de distribution qui se déploie sur Python 2 et Python 3. Un exemple peut être trouvé dans jaraco.util.

Vous avez également posé des questions sur le fonctionnement interne. Si vous voulez vraiment obtenir à l'intérieur, vous pouvez voir la source pour Python 2.x et Python 3.x, mais honnêtement, je m'en tiendrais à lire les tutoriels et peut-être certains de la .py fichiers dans les libs Python.

1voto

Paul D. Waite Points 35456

dois-je opter pour une approche descendante ou ascendante?

Tous les deux! Sérieusement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X