Importación de Módulos en Python: Guía Práctica con Ejemplos
¿Qué son los Módulos en Python?
Un módulo es un único archivo Python que puede contener variables, funciones y clases. Cuando nombras el archivo guru99.py, el módulo se accede como guru99. Los módulos te permiten dividir un programa grande en piezas lógicas, manteniendo tu código organizado y reutilizable.
¿Por Qué Importar Módulos?
Para usar código definido en otro archivo, debes importarlo. Importar te da acceso a las funciones, clases y variables del módulo, igual que la palabra clave import en lenguajes como JavaScript, Java o Ruby.
Creando e Importando un Módulo
Recorramos un ejemplo simple.
Estructura de carpetas:
modtest/ test.py display.py
1. Crea test.py:
def display_message():
return '¡Bienvenido a los Tutoriales de Guru99!'
2. Crea display.py e importa test:
import test print(test.display_message())
Ejecutar display.py imprime:
¡Bienvenido a los Tutoriales de Guru99!
Importando una Clase desde un Módulo
Supongamos Car.py define una clase coche:
class Car:
brand_name = 'BMW'
model = 'Z4'
manu_year = '2020'
def __init__(self, brand_name, model, manu_year):
self.brand_name = brand_name
self.model = model
self.manu_year = manu_year
def car_details(self):
print('Marca del coche es', self.brand_name)
print('Modelo del coche es', self.model)
print('Año de fabricación es', self.manu_year)
def get_car_brand(self):
print('Marca del coche es', self.brand_name)
def get_car_model(self):
print('Modelo del coche es', self.model)
Úsalo en display.py:
import Car
car_det = Car.Car('BMW', 'Z5', 2020)
print(car_det.brand_name)
car_det.car_details()
car_det.get_car_brand()
car_det.get_car_model()
Salida:
BMW Marca del coche es BMW Modelo del coche es Z5 Año de fabricación es 2020 Marca del coche es BMW Modelo del coche es Z5
Usando from para Importar Items Específicos
Cuando solo necesitas unas pocas funciones o variables, impórtalas directamente:
from test import display_message print(display_message())
Si intentas usar un nombre no importado, Python lanza NameError:
from test import display_message print(display_message1())
Importando Todo desde un Módulo
Importa el módulo entero con import test y prefija nombres con el módulo, o importa todos los nombres al namespace actual con from test import *. Lo segundo es conveniente pero puede contaminar el namespace.
Entendiendo dir()
La función integrada dir() lista todos los atributos de un objeto, incluyendo los definidos en un módulo:
import Car print(dir(Car))
Para librerías estándar:
import json print(dir(json))
Trabajando con Paquetes (Packages)
Un paquete es un directorio conteniendo un archivo __init__.py y uno o más módulos. Por ejemplo:
Estructura de directorio:
mypackage/ __init__.py module1.py module2.py module3.py
En module1.py:
def mod1_func1():
print('Bienvenido a Module1 function1')
def mod1_func2():
print('Bienvenido a Module1 function2')
# …
Importa con alias:
import mypackage.module1 as mod1 mod1.mod1_func1() mod1.mod1_func2()
Ruta de Búsqueda de Módulos en Python
Cuando Python resuelve un import, verifica:
- El directorio de trabajo actual.
- Módulos built-in.
- Directorios listados en
sys.path.
Inspecciónalo con:
import sys print(sys.path)
Usando Alias para Módulos
Da a un módulo un nombre más corto para mejorar legibilidad:
import test as t print(t.display_message()) print(t.my_name)
Imports Absolutos vs Relativos
En un proyecto multi-módulo, puedes referirte a módulos ya sea por su ruta completa (absoluta) o relativa al archivo actual.
Ejemplo Import Absoluto
from package1.module1 import myfunc1 # o import package1.module1 package1.module1.myfunc1()
Ejemplo Import Relativo
from .module1 import myfunc1 # o from .subpkg.module3 import myfunc3
Los imports absolutos son más claros y menos propensos a error cuando un proyecto se mueve, pero pueden volverse verbosos. Los imports relativos mantienen código conciso pero pueden ser más difíciles de rastrear en proyectos grandes.
Puntos Clave
- Los módulos permiten dividir código Python en archivos separados.
- Usa
importofrom … import …para acceder a contenidos del módulo. - Alias (
as) hacen nombres de módulos largos más manejables. - Paquetes organizan módulos en directorios, con
__init__.pymarcándolos. - Entiende
sys.pathpara troubleshooting de errores de import. - Elige imports absolutos para claridad, relativos para brevedad.
python
- Módulos en Python: Creación, importación y uso avanzado
- Dominar el Módulo time de Python: Funciones, Structs y Ejemplos Prácticos
- Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
- Domine el Formateo de Strings en Python con format(): Ejemplos Claros
- Domine el Método String.find() en Python: Sintaxis, Ejemplos y Alternativas
- Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas
- Función round() en Python explicada con ejemplos prácticos
- Dominando la función map() de Python: sintaxis, ejemplos y mejores prácticas
- Python timeit(): medición de tiempo de ejecución con ejemplos prácticos
- Counter de collections en Python: conteo eficiente, actualización y operaciones aritméticas
- Entendiendo type() e isinstance() en Python: ejemplos prácticos