real - ¿Encontrar el código fuente para las funciones incorporadas de Python?
matplotlib ejes (6)
Aquí hay una respuesta del libro de cocina para complementar la respuesta de @Chris , CPython se ha movido a GitHub y el repositorio de Mercurial ya no se actualizará:
- Instala Git si es necesario.
git clone https://github.com/python/cpython.git
El código se
cpython
un subdirectorio llamadocpython
->cd cpython
- Digamos que estamos buscando la definición de
print()
... -
egrep --color=always -R ''print'' | less -R
- Aha! Ver
Python/bltinmodule.c
->builtin_print()
Disfrutar.
Posible duplicado:
Acerca de python construido en el método sort ()
¿Hay alguna manera de ver cómo funcionan las funciones integradas en python? No me refiero solo a cómo usarlos, sino también cómo fueron construidos, ¿qué código está ordenado o enumerado, etc.?
Como Python es de código abierto, puedes leer el código fuente .
Para averiguar en qué archivo se implementa un módulo o función en particular, generalmente puede imprimir el atributo __file__
. Alternativamente, puede usar el módulo de inspect
; consulte la sección Recuperación del código fuente en la documentación de inspect
.
Para las clases y métodos incorporados, esto no es tan sencillo ya que inspect.getfile
e inspect.getsource
devolverán un error de tipo que indica que el objeto está incorporado. Sin embargo, muchos de los tipos incorporados se pueden encontrar en el subdirectorio Objects
del tronco de origen de Python . Por ejemplo, consulte here para la implementación de la clase enumerate o here para la implementación del tipo de list
.
El shell iPython hace esto fácil: function?
le dará la documentación. function??
muestra también el código. PERO esto solo funciona para funciones puras de python.
Entonces siempre puedes download el código fuente para el (c) Python.
Si le interesan las implementaciones pythonic de la funcionalidad central, eche un vistazo a la fuente PyPy .
Un recurso bastante desconocido es la Guía para Desarrolladores de Python.
En un tema (un tanto) reciente de GH, se agregó un nuevo capítulo para abordar la pregunta que estás haciendo: Diseño del código fuente de CPython . Si algo debe cambiar, ese recurso también se actualizará.
simplemente puede usar el comando help()
para obtener ayuda acerca de funciones incorporadas y su código.
por ejemplo: si quiere ver el código de str (), simplemente escriba - help(str)
volverá así,
>>> help(str)
Help on class str in module __builtin__:
class str(basestring)
| str(object='''') -> string
|
| Return a nice string representation of the object.
| If the argument is a string, the return value is the same object.
|
| Method resolution order:
| str
| basestring
| object
|
| Methods defined here:
|
| __add__(...)
| x.__add__(y) <==> x+y
|
| __contains__(...)
| x.__contains__(y) <==> y in x
|
| __eq__(...)
| x.__eq__(y) <==> x==y
|
| __format__(...)
| S.__format__(format_spec) -> string
|
| Return a formatted version of S as described by format_spec.
|
| __ge__(...)
| x.__ge__(y) <==> x>=y
|
| __getattribute__(...)
-- More --
Tuve que buscar un poco para encontrar la fuente de las siguientes Built-in Functions
ya que la búsqueda arrojaría miles de resultados. (Buena suerte buscando a cualquiera de ellos para encontrar su origen)
De todos modos, todas esas funciones se definen en bltinmodule.c
funciones comienzan con builtin_{functionname}
Fuente incorporada: https://github.com/python/cpython/blob/master/Python/bltinmodule.c