Imports circulares en Python: causas, fallos y soluciones
Qué son los imports circulares, por qué el intérprete falla con módulos parcialmente inicializados y tres técnicas concretas para resolverlos.
Qué son los imports circulares, por qué el intérprete falla con módulos parcialmente inicializados y tres técnicas concretas para resolverlos.
Cómo `__init__.py` define paquetes regulares, cuándo usar namespace packages sin él, y qué papel real juega `__all__` en la API pública.
Diferencias mecánicas entre `import paquete.modulo` y `from . import modulo`, cuándo cada uno falla y por qué PEP 8 favorece los absolutos.
Cómo la variable `__name__` controla qué código se ejecuta al importar vs. al correr directamente, y por qué este patrón hace los módulos testeables.
Cómo Python construye `sys.path`, el rol de los entornos virtuales y archivos `.pth`, y por qué modificarlo en producción es casi siempre un error de diseño.
Un módulo es un archivo .py que Python ejecuta una vez al importar; sys.modules lo cachea y importlib.reload() fuerza una re-ejecución.
Cómo Python captura variables en celdas, el bug clásico del closure en bucle, `nonlocal`, y cuándo preferir una clase.
Las funciones en Python son objetos que puedes pasar, retornar y almacenar. Entiende sus atributos internos y los patrones que esto habilita.
Cómo y cuándo usar `global` y `nonlocal` para escribir en scopes externos, sus casos legítimos y por qué el abuso de `global` es señal de mal diseño.
Cómo Python resuelve nombres siguiendo el orden Local→Enclosing→Global→Built-in, cuándo usar nonlocal vs global y por qué los closures en bucles se comportan de forma inesperada.