1 usuario conectado

Módulos y paquetes. Importación de módulos

Comparte esto

Ahora vamos a adentrarnos en el mundo de los módulos y paquetes en Python, que son mecanismos fundamentales para organizar y reutilizar tu código.

Módulos:

Un módulo en Python es simplemente un archivo que contiene código Python (definiciones de funciones, clases, variables, etc.) y tiene la extensión .py. Los módulos permiten dividir un programa grande en archivos más pequeños y manejables, facilitando la organización, la reutilización de código y el mantenimiento.

Importación de Módulos:

Para utilizar el código de un módulo en otro archivo Python, necesitas importar el módulo. Python proporciona varias formas de hacerlo:

  1. import nombre_del_modulo:

    Ejemplo:

    Supongamos que tienes un archivo llamado calculadora.py con el siguiente contenido:

    Python
     
    # calculadora.py
    def sumar(a, b):
        return a + b
    
    def restar(a, b):
        return a - b
    
    PI = 3.14159
    

    Ahora, en otro archivo Python, puedes importar y usar este módulo así:

    Python
     
    # mi_script.py
    import calculadora
    
    resultado_suma = calculadora.sumar(5, 3)
    resultado_resta = calculadora.restar(10, 4)
    pi_valor = calculadora.PI
    
    print(f"Suma: {resultado_suma}")
    print(f"Resta: {resultado_resta}")
    print(f"Valor de PI: {pi_valor}")
    

    Salida:

    Suma: 8
    Resta: 6
    Valor de PI: 3.14159
    
  2. from nombre_del_modulo import elemento1, elemento2, ...:

    Ejemplo (usando el mismo calculadora.py):

    Python
     
    # mi_otro_script.py
    from calculadora import sumar, PI
    
    resultado = sumar(7, 2)
    print(f"La suma es: {resultado}")
    print(f"El valor de PI es: {PI}")
    
    # Si intentas usar 'restar' aquí, generará un NameError porque no fue importado directamente.
    

    Salida:

    La suma es: 9
    El valor de PI es: 3.14159
    
  3. from nombre_del_modulo import *:

    Ejemplo (con precaución):

    Python
     
    # mi_tercer_script.py
    from calculadora import *
    
    resultado_suma = sumar(1, 1)
    resultado_resta = restar(5, 2)
    print(f"Suma: {resultado_suma}, Resta: {resultado_resta}, PI: {PI}")
    

    Salida:

    Suma: 2, Resta: 3, PI: 3.14159
    
  4. Importar con un alias (as):

    Ejemplo (alias para el módulo):

    Python
     
    # mi_cuarto_script.py
    import calculadora as calc
    
    resultado = calc.sumar(8, 2)
    print(f"El resultado usando el alias es: {resultado}")
    

    Salida:

    El resultado usando el alias es: 10
    

    Ejemplo (alias para elementos específicos):

    Python
     
    # mi_quinto_script.py
    from calculadora import sumar as s, PI as valor_pi
    
    resultado = s(3, 3)
    print(f"Suma con alias: {resultado}")
    print(f"PI con alias: {valor_pi}")
    

    Salida:

    Suma con alias: 6
    PI con alias: 3.14159
    

Paquetes:

Un paquete es una colección de módulos Python relacionados organizados en una estructura de directorios. Los paquetes ayudan a estructurar grandes proyectos de Python y a evitar conflictos de nombres entre módulos.

Para que Python trate un directorio como un paquete, debe contener un archivo especial llamado __init__.py (puede estar vacío en versiones recientes de Python, pero tradicionalmente se utilizaba para realizar inicializaciones del paquete o para definir qué módulos del paquete deben ser exportados cuando se importa el paquete).

Estructura de un Paquete de Ejemplo:

mi_paquete/
    __init__.py
    modulo_a.py
    subpaquete/
        __init__.py
        modulo_b.py

Importación de Elementos desde Paquetes:

Puedes importar módulos y elementos desde paquetes utilizando una sintaxis similar a la importación de módulos individuales, utilizando la notación de punto para navegar por la estructura del paquete.

Ejemplos de Importación desde Paquetes (asumiendo la estructura anterior):

  1. Importar el módulo completo:

    Python
     
    import mi_paquete.modulo_a
    mi_paquete.modulo_a.mi_funcion_a()
    
  2. Importar el submódulo completo:

    Python
     
    import mi_paquete.subpaquete.modulo_b
    mi_paquete.subpaquete.modulo_b.mi_funcion_b()
    
  3. Importar elementos específicos desde un módulo en un paquete:

    Python
     
    from mi_paquete import modulo_a
    modulo_a.otra_funcion_a()
    
    from mi_paquete.subpaquete import modulo_b
    modulo_b.funcion_b_especifica()
    
  4. Importar elementos específicos directamente al espacio de nombres:

    Python
     
    from mi_paquete.modulo_a import una_variable_a
    print(una_variable_a)
    
    from mi_paquete.subpaquete.modulo_b import ClaseB
    objeto_b = ClaseB()
    

El archivo __init__.py:

Python
 
# mi_paquete/__init__.py
__all__ = ['modulo_a', 'subpaquete']

Con esta definición en __init__.py, from mi_paquete import * importaría modulo_a y el submódulo subpaquete.

Los módulos y paquetes son herramientas esenciales para organizar y reutilizar código en proyectos Python de cualquier tamaño. Permiten crear código más modular, legible y mantenible.