Python

Ver el código de cualquier función en Python

Una característica bastante interesante de R es la posibilidad de ver el código de una función simplemente escribiendo el nombre de estas sin paréntesis. Lo que permite ver y comprender el funcionamiento de estas. Independientemente de que sea una función creada por nosotros o una que se hubiese importado de un paquete. Esta característica no existe como tal en Python, pero es algo que se puede solucionar con la biblioteca inspect de la librería estándar del lenguaje. En esta entrada se explicará cómo se puede usar esta biblioteca para tener acceso al código de cualquier función en Python.

inspect de Python

La biblioteca inspect de Python proporciona funciones para analizar los objetos que se encuentran en memoria durante la ejecución de un programa. Mediante la cual se puede obtener información de los módulos, clases, funciones y el resto de los objetos importados. Dado que es una biblioteca de la librería estándar de Python ya se encuentra instalada en nuestra cualquier distribución, por lo que no es necesario instalarla con el comando pip.

Obtener el código de cualquier función en Python

Para obtener el código de cualquier función en Python se puede usar la función getsource() de la biblioteca inspect. Una función a la que solamente se le debe pasar como parámetro un objeto que se encuentre en vivo en memoria, tanto importado de una librería, de un archivo o definido en el programa. Por ejemplo, a continuación se puede crear una función sencilla y ver cómo se puede obtener el código con la función la función getsource()

import inspect

# Definimos una función simple
def mi_funcion():
    return "Hola, mundo!"

# Vamos a ver el código fuente de la función que acabamos de definir
codigo_fuente = inspect.getsource(mi_funcion)

# Imprimimos el código fuente
print(codigo_fuente)
def mi_funcion():
    return "Hola, mundo!"

Nótese que la función getsource() recibe el objeto que se desea analizar no una cadena de texto con el nombre de este. Esto se puede hacer con funciones de cualquier librería como max() de NumPy.

import inspect
import numpy as np

# Vamos a ver el código fuente de la función que np.max
codigo_fuente_max = inspect.getsource(np.max)

# Imprimimos el código fuente de np.max
print(codigo_fuente_max)

En este caso no se muestra la salida del comando dado que es bastante largo.

Limitaciones de getsource()

La función getsource() no permite ver el código de funciones o métodos integrados o compilados que están escritos en C, ya que solamente puede mostrar código Python.

Otras funciones en inspect

La biblioteca inspect no solamente permite mostrar el código fuente de una función Python, también puede proporcionar información detallada sobre los argumentos de estas. Por ejemplo, el método signature() permite obtener información sobre los argumentos de la función

# Vamos a ver la firma de la función que np.max
firma = inspect.signature(np.max)

# Imprimimos la firma 
print(firma)
(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)

Lo que puede ser extremadamente útil para comprender cómo interactuar con una función y qué parámetros espera.

Conclusiones

En esta entrada se ha explicado cómo se puede usar la biblioteca inspect para mostrar el código de cualquier función en Python. Una herramienta que puede ser muy útil para conocer las implementaciones de las funciones que se están utilizando y comprender estas. Además de ser una forma rápida para saber si la función que se ha importado es la que se desea en cada momento.

Imagen de Johnson Martin en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

== vs is en Python: la diferencia que causa bugs misteriosos

Hay un bug que aparece una y otra vez en código Python, tan sutil que…

1 día ago

Curiosidad: El puerto 80 y los números de puerto

Durante décadas, cuando escribías una dirección web y pulsabas Intro, tu navegador hacía algo que…

6 días ago

Cómo Proyectar Cuándo Alcanzarás la Independencia Financiera

La independencia financiera es el punto en el que tus inversiones generan suficientes rendimientos para…

1 semana ago

Cómo Elegir el Test de Hipótesis Correcto para tus Datos

Tienes dos grupos de datos y quieres saber si son estadísticamente distintos. O tienes una…

2 semanas ago

Tuplas vs Listas en Python: parecen lo mismo, pero no

A primera vista, tuplas y listas son casi idénticas. Ambas guardan colecciones ordenadas de elementos.…

2 semanas ago

Qué significa realmente “calidad de datos”

"Nuestros datos no tienen buena calidad." Escuchas esto constantemente en reuniones. El problema es que…

3 semanas ago

This website uses cookies.