CPython: internamente, ¿qué se almacena en la stack y el montón?

En C #, los tipos de valor (por ejemplo: int, float, etc.) se almacenan en la stack. Los parámetros del método también se pueden almacenar en la stack también. Casi todo lo demás, sin embargo, se almacena en el montón. Esto incluye listas, objetos, etc.

Me preguntaba, ¿CPython hace lo mismo internamente? ¿Qué almacena en la stack y qué pone en el montón?

Todos los objetos de Python en la implementación de CPython van al montón. Puede leer en detalle cómo funciona la administración de memoria de Python aquí en la documentación:

La administración de memoria en Python implica un montón privado que contiene todos los objetos y estructuras de datos de Python. La administración de este montón privado está asegurada internamente por el administrador de memoria de Python. El administrador de memoria de Python tiene diferentes componentes que se ocupan de varios aspectos de la administración del almacenamiento dynamic, como compartir, segmentar, preasignar o almacenar en caché.

Tenga en cuenta que Python en sí es solo un lenguaje, y no dice nada sobre cómo deberían funcionar las funciones internas como la gestión de memoria; Este es un detalle dejado a los implementadores.

El tiempo de ejecución de Python solo trata las referencias a objetos (que todos viven en el montón): lo que va en la stack de Python (como operandos y resultados de sus operaciones de bytecode) son siempre referencias (a valores que viven en otro lugar).