17. Modulos y paquetes - manuelmarinduque/Apuntes_Python_3 GitHub Wiki
Un módulo es un archivo con extensión .py, el cual puede contener clases, funciones, variables e incluso otros módulos. También posee su propio espacio de nombres. Su utilidad es organizar el código del programa y reutilizarlo si se necesita en otros programas (modularización y reutilización).
Un programa complejo y extenso es mejor manipularlo en módulos de cientos de LdC que en un único mega archivo de miles de LdC, es decir, en módulos el mantenimiento, revisión, la busca de fallos y su corrección, y extender el programa, añadiendo nuevas funcionalidades, resulta más fácil de hacer.
Nota: Es normal que en un módulo se defina una única clase, pero también pueden definirse varias clases. principal
Si se está repitiendo código hecho en su día, algo se está haciendo mal. Una de las ventajas de la POO es la reutilización de código mediante módulos.
Conectar clases con otras para que funcionen como una unidad. Si un módulo necesita acceder a las funciones de otro, este módulo se importa en el módulo origen y luego se hace llamado a sus clases y funciones, pasando parámetros si la función lo requiere. Tener en cuenta que el flujo de ejecución pasa de un módulo a otro.
Tomado de Paquetes I. Vídeo 35
Un paquetes es una carpeta donde se almacenan módulos relacionados entre sí o con el mismo objetivo. Su utilidad es organizar los módulos del programa y reutilizarlos si se necesitan en otros programas. Para crear un paquete sólo basta con crear en su interior el archivo __init__.py
Nota: En Django es muy común usar la importación de módulos almacenados en paquetes para que el proyecto mantenga un organigrama ordenado dividido en carpetas. Además la cláusula import se usa para invocar métodos propios del framework (dado que cargarlos todos por defecto sería un desperdicio) y así se le da al usuario programador la posibilidad de elegir que métodos serán cargados y puestos a disposición para ser usados según su interés.
Son paquetes con los módulos de creación propia, los cuales se pueden compartir con otros programadores. Se instalan en el intérprete de Python, por lo que se puede acceder a estos desde cualquier archivo sin importar el sitio donde se encuentre. Sería útil utilizar entornos virtuales para no alterar el intérprete global. Aquí los pasos para crear e instalar paquetes
Una buena práctica de programación es tener organizados todos los módulos de un programa en paquetes. Por tanto, crear cada paquete con sus respectivos módulos y subpaquetes, si es necesario, en la raíz origen del programa y allí mismo crear el archivo principal main.py, el cual importe y use el contenido de los módulos para construir el programa al crear objetos de clase. El contenido del módulo se importa especificando su ruta dentro de un paquete o subpaquete en la instrucción import o from ... import:
- Usando la instrucción import ruta: Esto implica usar la notación del punto para usar las funciones o las clases contenidas en el módulo, lo cual resulta engorroso si son muchas:
En el momento de importar un módulo puede asignarse también un alias con as:
import Herencia_super as hs# Sin paquetes ni subpaquetes
# Creación de un objeto persona:
Manuel = hs.Empleado(210, 55, "Manuel", 22, "Tulua")
Manuel.descripcion()
- Usando la instrucción from ruta import funcion/clase: Importar sólo aquella función o clase a utilizar y así evitar hacer referencia al nombre del módulo. Puede usarse el asterisco para llamar todo el contenido del módulo, pero en programas extensos sería ineficiente y reduce su rendimiento. Además, puede crear conflictos con variables o con funciones que tengan nombres iguales en otros módulos importados en una misma aplicación:
# Se carga la función pi del módulo math:
from math import pi
# Este uso no se recomienda:
print('El valor de pi', pi) # es mejor: math.pi