Python Esencial
Tipos, funciones puras, comprehensions, type hints y entornos virtuales.
Python es el lenguaje dominante en el ecosistema de IA porque combina una sintaxis clara con un ecosistema de librerías maduro (NumPy, pandas, PyTorch). Antes de tocar modelos de machine learning, es crítico tener las bases sólidas: si tu código base falla, tu modelo fallará por razones invisibles.
Los tipos de datos fundamentales son int, float, str, bool, list, tuple, dict y set. La diferencia entre tipos mutables (list, dict, set) e inmutables (tuple, str, int) determina cómo Python gestiona la memoria y cómo debes diseñar tus funciones. Un bug clásico es usar un objeto mutable como valor por defecto en un parámetro de función.
Las funciones puras no tienen efectos secundarios: dado el mismo input, siempre producen el mismo output y no modifican estado externo. En pipelines de datos esto es esencial porque hace que cada paso sea testeable de forma aislada. Piénsalo como una función matemática: f(x) = y, siempre.
Las list comprehensions y dict comprehensions son la forma pytónica de transformar colecciones. Son más legibles y típicamente más rápidas que un bucle for equivalente porque están optimizadas a nivel de bytecode. La regla: si el bucle cabe en una línea y no tiene efectos secundarios, usa comprehension.
Los type hints (PEP 484) no cambian el comportamiento en runtime, pero permiten que herramientas como mypy y pyright detecten errores antes de ejecutar el código. En proyectos de IA donde los tensores tienen formas específicas, anotar correctamente las firmas de función es la diferencia entre un bug silencioso y un error detectado en CI.
Los entornos virtuales (venv o uv) aíslan las dependencias de cada proyecto. Sin aislamiento, instalar una librería para un proyecto puede romper otro. uv es el reemplazo moderno: escrito en Rust, resuelve dependencias en milisegundos y reemplaza pip + virtualenv + pip-tools en un solo comando.
# Tipos básicos
x: int = 42
pi: float = 3.14
name: str = 'Alice'
active: bool = True
# Colecciones
items: list[int] = [1, 2, 3]
pair: tuple[str, int] = ('age', 30)
config: dict[str, str] = {'env': 'prod'}
unique: set[int] = {1, 2, 3}
# Función pura con type hints
def square(n: int) -> int:
return n * n
# List comprehension
squares = [x**2 for x in range(10)]
evens = [x for x in range(20) if x % 2 == 0]
# Dict comprehension
lengths = {word: len(word) for word in ['ai', 'ml', 'nlp']}
# Entorno virtual con uv
uv venv .venv
source .venv/bin/activate # Linux/macOS
uv pip install numpy pandas
# Estructura de proyecto recomendada
my_project/
src/
my_package/
__init__.py
core.py
tests/
pyproject.toml
.venv/Debugging lab
Detecta y corrige el error en el código.
- 1.1.5.1
def append_item(item, items=[]): items.append(item) return items
- 1.1.5.2
squares = [x^2 for x in range(10)]
- 1.1.5.3
def process(data: list) -> dict: return {i: data[i] for i in data}
- 1.1.5.4
evens = [x for x in range(20) if x % 2 = 0]
- 1.1.5.5
pip install torch pip install numpy