Cuando mezclas lectura de datos, cálculos, menús y utilidades en el mismo archivo, encontrar una función empieza a costar. Un módulo te permite agrupar código relacionado y darle un nombre.
En Python, un archivo .py puede actuar como módulo. Importarlo significa hacer accesibles sus nombres desde otro lugar.
Rastrear de qué archivo o módulo procede un nombre utilizado en otro punto del programa.
Un módulo es una caja con nombre, no magia externa
import math print(math.sqrt(81))
import math hace disponible el módulo y math.sqrt deja visible de dónde procede sqrt.
Ese prefijo puede parecer más largo, pero cuando el programa crece ayuda a leer: «esta operación pertenece a math».
from ... import ... acorta el nombre a cambio de perder contexto visual
from math import sqrt print(sqrt(81))
Ambas formas son válidas. Si utilizas una función muchísimas veces y no hay riesgo de confusión, importar el nombre directamente puede ser cómodo.
La decisión no es «qué sintaxis es profesional», sino cuánta claridad quieres conservar sobre el origen del nombre.
Los alias sirven cuando el nombre original es incómodo, no para esconderlo todo
import statistics as stats valores = [10, 20, 30] print(stats.mean(valores))
as crea un nombre alternativo. Es útil con convenciones conocidas o nombres largos. Un alias críptico como x suele empeorar la lectura.
Cuando importas tu propio archivo, estás reutilizando una pieza del programa
Imagina un archivo precios.py con una función calcular_iva(). Otro archivo puede hacer import precios y llamar a precios.calcular_iva(...).
Esta separación permite que cada archivo tenga una responsabilidad más clara. No tienes que crear módulos desde la primera línea de un proyecto: sepáralos cuando aparezcan grupos de funciones que forman una unidad reconocible.
Evita import *: ahorrar caracteres puede costarte comprensión
from modulo import * introduce muchos nombres sin mostrar de dónde han venido. Si dos módulos definen el mismo nombre, además puedes sobrescribir uno sin darte cuenta.
Prefiere imports explícitos. El lector debería poder descubrir el origen de un nombre sin realizar una investigación.
Rastrea de dónde viene cada nombre
def con_iva(precio):
return precio * 1.21from precios import con_iva print(con_iva(100))
precios.pyexportacon_iva→ importapp.pyActividad de ensamblaje: responde sin ejecutar:
- ¿En qué archivo se define
con_iva? - ¿Qué línea hace que el nombre esté disponible en
app.py? - Si cambias el nombre de la función en
precios.py, ¿qué otra línea debes actualizar?
Comprobar razonamiento
- En
precios.py. from precios import con_iva.- El import de
app.pyy cualquier llamada que use el nombre anterior.
Simular un import propio dentro de un único editor ocultaría precisamente la idea que quieres aprender: dos archivos con responsabilidades distintas. Aquí la práctica correcta es rastrear el origen del nombre.
Si sabes señalar el origen de un nombre, ya tienes la idea esencial
import mathmantiene el espacio de nombres visible.from math import sqrttrae un nombre concreto al archivo actual.- Separar módulos sirve para agrupar responsabilidades, no para multiplicar archivos sin motivo.
Ya sabes importar código. Ahora toca evitar que los paquetes instalados para un proyecto contaminen todos los demás.