¿Encontrar el código fuente para las funciones integradas de Python?
¿Hay alguna manera de ver cómo funcionan las funciones integradas en Python? No me refiero solo a cómo usarlos, sino también a cómo se construyeron, ¿cuál es el código detrás de ordenar o enumerar , etc.?
Como Python es de código abierto, puedes leer el código fuente .
Para saber en qué archivo está implementado un módulo o función en particular, normalmente puede imprimir el __file__
atributo. Alternativamente, puede utilizar el inspect
módulo; consulte la sección Recuperación del código fuente en la documentación de inspect
.
Para clases y métodos integrados, esto no es tan sencillo ya que inspect.getfile
devolverá inspect.getsource
un error de tipo indicando que el objeto está integrado. Sin embargo, muchos de los tipos integrados se pueden encontrar en el Objects
subdirectorio del tronco fuente de Python . Por ejemplo, consulte aquí para conocer la implementación de la clase enumerar o aquí para conocer la implementación del list
tipo.
Aquí hay una respuesta de libro de cocina para complementar la respuesta de @Chris , CPython se mudó a GitHub y el repositorio de Mercurial ya no se actualizará:
- Instale Git si es necesario.
git clone https://github.com/python/cpython.git
El código se transferirá a un subdirectorio llamado
cpython
->cd cpython
- Digamos que estamos buscando la definición de
print()
... egrep --color=always -R 'print' | less -R
- ¡Ajá! Ver
Python/bltinmodule.c
->builtin_print()
Disfrutar.
Tuve que investigar un poco para encontrar la fuente de lo siguiente, Built-in Functions
ya que la búsqueda arrojaría miles de resultados. (Buena suerte buscando cualquiera de ellos para encontrar dónde está su fuente)
De todos modos, todas esas funciones están definidas en bltinmodule.c
Funciones que comienzan conbuiltin_{functionname}
Fuente incorporada: https://github.com/python/cpython/blob/master/Python/bltinmodule.c
Para tipos integrados: https://github.com/python/cpython/tree/master/Objects