python python-3.x internals

¿Cómo puedo obtener más información sobre las partes internas de Python?



python-3.x internals (6)

He estado programando usando Python por poco más de medio año y estoy más interesado en Python en lugar de usar Python para desarrollar aplicaciones. Actualmente estoy trabajando en portar algunas bibliotecas desde Python2 a Python3. Sin embargo, tengo una visión más bien abstracta sobre cómo hacer que el puerto pase de Python2 a Python3, ya que la mayoría de los cambios tienen que ver con problemas de diseño en Python2.x

Me gustaría aprender más acerca de las partes internas de Python; ¿Debo ir por un enfoque de arriba hacia abajo o de abajo hacia arriba? ¿Hay alguna referencia que puedas recomendar?


¿Debo ir por un enfoque de arriba hacia abajo o de abajo hacia arriba?

¡Ambos! Seriamente.




Para alguien que está tropezando con esta pregunta de enlaces relacionados o búsqueda, hay una documentación escrita por Yaniv Aknin en Python Internals . Comienza desde cero y es altamente legible.


Parece que quiere saber más sobre la razón de ser del diseño del lenguaje, en lugar de los aspectos internos. "Internals" para mí significa cosas como cómo se colocan los objetos en la memoria, cómo funciona el recuento de referencias, etc.

Si busca una comprensión más profunda de las decisiones de diseño, intente leer las PEPs : son las propuestas de cambios en el idioma, y ​​a menudo incluyen discusiones detalladas sobre los motivos de los cambios, las alternativas rechazadas, etc. Incluso las PEP rechazadas son útiles, porque muestran el pensamiento que ha dado forma al lenguaje.

Por ejemplo:

y así..

Si realmente quieres aprender sobre las partes internas de Python, comienza leyendo acerca de la API Python C, que se usa para construir Python: mi charla Una Excursión Whirlwind a través de las Extensiones Python C es un lugar para comenzar. Luego puede sumergirse en el código fuente de Python en sí mismo para cualquier cosa que necesite aprender.


Primero leería el documento What''s New para Python 3. Proporciona una buena descripción general de alto nivel y toca los cambios detallados.

También puede hacer una búsqueda de ''porting to python 3'' o similar. Hay muchos buenos recursos y herramientas.

Una herramienta nueva y difícil de encontrar es six , por Benjamin Peterson. Permite la escritura de código que es compatible en toda la brecha de Python 2 * 3.

La parte que me resultó más difícil para mantener el código compatible con Python 2 y Python 3 fue la implementación. Podría escribir código que funcionaría bien, pero cuando hice el paquete y la implementación, no estaba claro cuándo debería ocurrir la conversión. Finalmente encontré un comando build_py_2_to_3 que haría el truco. Al usar ese comando en mi setup.py, podría lanzar una distribución fuente que se implementaría en Python 2 o Python 3. Se puede encontrar un ejemplo en jaraco.util.

También preguntaste sobre el funcionamiento interno. Si realmente quieres llegar a la parte interna, puedes ver la fuente de Python 2.xy Python 3.x , aunque, sinceramente, me quedaría con la lectura de los tutoriales y tal vez algunos de los archivos .py en las bibliotecas de Python.