¿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 ordenarlos o enumerarlos, etc.?
fuente
¿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 ordenarlos o enumerarlos, etc.?
Como Python es de código abierto, puede leer el código fuente .
Para averiguar en qué archivo se implementa un módulo o función en particular, generalmente puede imprimir el __file__
atributo. Alternativamente, puede usar el inspect
módulo, consulte la sección Recuperación del código fuente en la documentación de inspect
.
Para las clases y métodos integrados, esto no es tan sencillo desde entonces inspect.getfile
y inspect.getsource
devolverá un error de tipo que indica 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, vea aquí para la implementación de la clase enumerate o aquí para la implementación del list
tipo.
enumerate
?sorted()
está en /Python/bltinmodule.c aunque solo llamalist.sort()
para que la fuente real esté en /Objects/listobject.cAquí hay una respuesta del libro de cocina para complementar la respuesta de @Chris , CPython se mudó a GitHub y el repositorio de Mercurial ya no se actualizará:
git clone https://github.com/python/cpython.git
El código pasará a un subdirectorio llamado
cpython
->cd cpython
print()
...egrep --color=always -R 'print' | less -R
Python/bltinmodule.c
->builtin_print()
Disfrutar.
fuente
Tuve que cavar 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 esos 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
listobject.c
github.com/python/cpython/tree/master/ObjectsEl shell de iPython lo hace fácil:
function?
le dará la documentación.function??
muestra también el código. PERO esto solo funciona para funciones de Python puro.Entonces siempre puede descargar el código fuente para (c) Python.
Si está interesado en implementaciones pitónicas de la funcionalidad central, eche un vistazo a la fuente PyPy .
fuente
2 métodos,
help()
inspect
1) inspeccionar:
use el módulo inpsect para explorar el código que desee ... NOTA: puede explorar el código solo para módulos (aka) paquetes que haya importado
por ejemplo:
2) ayuda ():
simplemente puede usar el
help()
comando para obtener ayuda sobre las funciones integradas y su código.por ejemplo: si desea ver el código para str (), simplemente escriba -
help(str)
volverá así,
fuente
Un recurso bastante desconocido es la Guía para desarrolladores de Python .
En un problema de GH (algo) reciente , se agregó un nuevo capítulo para abordar la pregunta que está haciendo: Diseño de código fuente de CPython . Si algo cambia, ese recurso también se actualizará.
fuente
Como mencionó @Jim, la organización del archivo se describe aquí . Reproducido para facilitar el descubrimiento:
fuente