web-dev-qa-db-fra.com

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

Je programme en utilisant Python depuis un peu plus d'un demi-an maintenant et je suis plus intéressé par 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 vers Python3. Cependant, j'ai une vue plutôt abstraite sur la façon de faire passer le port de Python2 à Python3 car la plupart des changements concernent des problèmes de conception dans Python2.x

J'aimerais en savoir plus sur Python internes; devrais-je opter pour une approche descendante ou ascendante? Y a-t-il des références que vous pourriez recommander?

52
user277465

Il semble que vous souhaitiez en savoir plus sur la raison d'être de la conception du langage, plutôt que sur les éléments internes. "internes" pour moi signifie des choses comme la façon dont les objets sont disposés en mémoire, le fonctionnement du comptage de références, etc.

Si vous recherchez une compréhension plus approfondie des décisions de conception, essayez de lire PEP : ce sont les propositions de changements dans la langue, et incluent souvent des discussions détaillées sur les raisons des changements, les alternatives rejetées , etc. Même les PPE rejetés sont utiles, car ils montrent la pensée qui a façonné la langue.

Par exemple:

etc..

Si vous voulez vraiment en savoir plus sur Python internes, commencez par lire sur l'API Python C, qui est utilisée pour construire Python elle-même: mon discours - ne excursion Whirlwind à travers les extensions Python 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.

35
Ned Batchelder

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

15
Senthil Kumaran

Je trouve la série de 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 this SO thread

5
eyquem

Je voudrais d'abord lire le document Quoi de neuf pour Python 3. Il donne un bon aperçu de haut niveau et aborde les changements détaillés.

Vous pouvez également rechercher 'portage vers python 3' ou similaire. Il existe de nombreuses ressources et outils de qualité.

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

La partie que j'ai trouvée la plus difficile pour maintenir Python 2 et Python 3 -compatible code était le déploiement. Je pouvais écrire du code qui fonctionnerait très bien, mais quand je est allé faire un package et un déploiement, on ne savait pas quand la conversion devait avoir lieu. J'ai finalement trouvé une commande distutils build_py_2_to_3 cela ferait l'affaire. En utilisant cette commande dans mon setup.py, je pourrais publier une distribution source qui se déploierait sur Python 2 ou Python 3. An exemple se trouve dans jaraco.util.

Vous avez également posé des questions sur les éléments internes. Si vous voulez vraiment accéder aux éléments internes, vous pouvez afficher la source de Python 2.x et Python 3.x , même si honnêtement, je m'en tiendrai à lire les tutoriels et peut-être certains des fichiers .py dans les Python libs.

2
Jason R. Coombs

devrais-je opter pour une approche descendante ou ascendante?

Tous les deux! Sérieusement.

1
Paul D. Waite
0
ssoler