¿Encontrar el código fuente para las funciones integradas de Python?

Resuelto user1073865 asked hace 12 años • 8 respuestas

¿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.?

user1073865 avatar Dec 23 '11 02:12 user1073865
Aceptado

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 inspectmó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.getfiledevolverá inspect.getsourceun error de tipo indicando que el objeto está integrado. Sin embargo, muchos de los tipos integrados se pueden encontrar en el Objectssubdirectorio 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 listtipo.

Chris avatar Dec 22 '2011 19:12 Chris

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á:

  1. Instale Git si es necesario.
  2. git clone https://github.com/python/cpython.git

  3. El código se transferirá a un subdirectorio llamado cpython->cd cpython

  4. Digamos que estamos buscando la definición de print()...
  5. egrep --color=always -R 'print' | less -R
  6. ¡Ajá! Ver Python/bltinmodule.c->builtin_print()

Disfrutar.

kevinarpe avatar Nov 15 '2014 14:11 kevinarpe

ingrese la descripción de la imagen aquí

Tuve que investigar un poco para encontrar la fuente de lo siguiente, Built-in Functionsya 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.cFunciones 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

user1767754 avatar Nov 18 '2017 21:11 user1767754