¿Cuál es la función de import ast en Python?

| Última modificación: 4 de febrero de 2025 | Tiempo de Lectura: 3 minutos
0
(0)

Hace unos años, mientras trabajaba en la automatización de análisis de código Python, me encontré con la necesidad de comprender y manipular el código fuente sin ejecutarlo. Fue entonces cuando descubrí el módulo import ast. En ese momento, no tenía idea del potencial que escondía esta herramienta, pero pronto me di cuenta de que me permitía analizar y modificar código de forma programática sin riesgos. Si te dedicas al desarrollo avanzado en Python, al análisis de código o a la seguridad informática, este módulo se convertirá en tu aliado. En este artículo, te explico cómo funciona y cómo puedes aprovecharlo.

import ast en Python

¿Qué es import ast y para qué sirve?

El módulo import ast en Python permite trabajar con Árboles de Sintaxis Abstracta (AST, por sus siglas en inglés). Básicamente, convierte código fuente en una estructura de datos que representa su sintaxis. Esto es útil para herramientas de análisis de código, linters, optimizadores y más.

Piensa en el código Python como un documento escrito en otro idioma. Si quieres analizarlo sin ejecutarlo, necesitas traducirlo a una estructura que puedas manipular. Eso es precisamente lo que hace import ast: convierte el código en un árbol con nodos que representan funciones, variables, expresiones y otros elementos de Python.

¿Cómo se usa import ast?

El uso básico de este módulo comienza con ast.parse, que transforma una cadena de código en un árbol de sintaxis abstracta:

import ast

codigo = "x = 5 + 3"
arbol = ast.parse(codigo)

print(ast.dump(arbol, indent=4))

Esto genera una estructura de datos que representa el código sin ejecutarlo. Con ast.dump, podemos visualizar la estructura del árbol.

Alternativas a import ast

Si solo necesitas evaluar valores sin ejecutar código arbitrario, ast.literal_eval es una opción más segura que eval.

import ast

expresion = "{'clave': 10 + 5}"
resultado = ast.literal_eval(expresion)
print(resultado) # {'clave': 15}

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Esta función evalúa literales seguros sin permitir ejecución de código malicioso.

Exploremos la estructura del AST

Cada nodo del árbol representa una parte del código. Algunos nodos comunes incluyen:

  1. ast.Module: representa el módulo principal
  2. ast.Assign: representa asignaciones de variables
  3. ast.BinOp: representa operaciones matemáticas
  4. ast.Call: representa llamadas a funciones

Veamos un ejemplo más detallado:

codigo = "def suma(a, b): return a + b"
arbol = ast.parse(codigo)

for nodo in ast.walk(arbol):
print(type(nodo).__name__)

Este código recorre todos los nodos del árbol y nos dice qué tipo de elementos hay dentro del código.

Modificación de código con import ast

Uno de los usos más poderosos de este módulo es la modificación de código fuente. Podemos cambiar partes del código antes de ejecutarlo. Por ejemplo, imagina que queremos transformar todas las sumas en restas:

class ReemplazoSumaPorResta(ast.NodeTransformer):
def visit_BinOp(self, node):
if isinstance(node.op, ast.Add):
node.op = ast.Sub()
return node

codigo = "resultado = 10 + 5"
arbol = ast.parse(codigo)

transformador = ReemplazoSumaPorResta()
nuevo_arbol = transformador.visit(arbol)
nuevo_codigo = ast.unparse(nuevo_arbol)

print(nuevo_codigo) # Salida: resultado = 10 - 5

Este ejemplo demuestra cómo modificar código en tiempo de ejecución sin afectar la fuente original.

¿Cuándo es útil import ast?

Aquí tienes algunos casos donde este módulo es realmente útil:

Casos donde es imprescindible Casos donde no es tan útil
Análisis de código estático: herramientas como linters lo usan para detectar errores sin ejecutar el código Cuando solo necesitas evaluar código: en ese caso, eval podría ser suficiente
Generación de documentación automática: extrae firmas de funciones y docstrings Para manipular código en ejecución: en ese caso, exec o eval pueden ser más prácticos
Auditorías de seguridad: permite revisar código antes de ejecutarlo y detectar patrones sospechosos Si necesitas modificar el código en caliente: exec es más adecuado para cambios dinámicos
import ast en python

Si te apasiona el mundo del desarrollo y quieres aprender más sobre herramientas avanzadas de Python, en KeepCoding tenemos el Bootcamp de programación para principiantes, ideal para ti. Aquí no solo aprenderás a programar, sino que te prepararemos para entrar al mundo IT con conocimientos que te abrirán las puertas a empleos bien remunerados y con gran estabilidad. No sigas esperando, tu cambio de vida comienza hoy.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado