¿Cómo verificar el código fuente de un método python?

Para ser breve, supongamos que tengo una cadena 'next' ,

 next = "123rpq" 

y puedo aplicar un método str .isdigit() al 'next' . Entonces mi pregunta es cómo verificar la implementación de este método. Por lo tanto, ¿existe una cosa como inspect.getsource(somefunction) para obtener el código fuente de un ‘método’?

ACTUALIZACIÓN: ver comentario sobre el nombre de la variable 'next' continuación.

Para módulos, clases, funciones y algunos otros objetos puede usar inspect.getfile o inspect.getsourcefile . Sin embargo, para los objetos y métodos incorporados, esto resultará en un TypeError . Como lo mencionó C0deH4cker, los objetos y métodos incorporados se implementan en C, por lo que tendrá que buscar el código fuente de C. isdigit es un método del objeto de cadena incorporado, que se implementa en el archivo stringobject.c en el directorio Objects del código fuente de Python. Este método de isdigits se implementa desde la línea 3392 de este archivo. Vea también mi respuesta aquí a una pregunta similar pero más general.

El método isdigit() que habla es un método incorporado de un tipo de datos integrado. Es decir, la fuente de este método está escrita en C, no en Python. Si realmente desea ver el código fuente del mismo, le sugiero que vaya a http://python.org y descargue el código fuente de Python.

Puede probar el method.__doc__ impresión method.__doc__ para obtener la documentación de ese método en particular. Si solo tienes curiosidad, puedes revisar PYTHONPATH para ver desde dónde se importan tus módulos y ver si encuentras el archivo .py de ese módulo.

Si bien en general estoy de acuerdo en que inspect es una buena respuesta, no funciona cuando se definió su clase (y por lo tanto el método de clase) en el intérprete.

Si usa dill.source.getsource de dill , puede obtener la fuente de funciones y lambdas, incluso si están definidas de manera interactiva. También puede obtener el código para los métodos y funciones de clase enlazados o no enlazados definidos en curries … sin embargo, es posible que no pueda comstackr ese código sin el código del objeto que lo contiene.

 >>> from dill.source import getsource >>> >>> def add(x,y): ... return x+y ... >>> squared = lambda x:x**2 >>> >>> print getsource(add) def add(x,y): return x+y >>> print getsource(squared) squared = lambda x:x**2 >>> >>> class Foo(object): ... def bar(self, x): ... return x*x+x ... >>> f = Foo() >>> >>> print getsource(f.bar) def bar(self, x): return x*x+x >>> 

Para funciones o métodos builtin , dill.source no funcionará … SIN EMBARGO …

Es posible que aún no tenga que recurrir a su editor favorito para abrir el archivo con el código fuente (como se sugiere en otras respuestas). Hay un nuevo paquete llamado cinspect que pretende poder ver el código fuente de los builtins .