CodeGym /Curso de Java /Python SELF ES /Importación de módulos

Importación de módulos

Python SELF ES
Nivel 19 , Lección 0
Disponible

1.1 Introducción a los módulos

Un módulo en Python es un archivo con extensión .py que contiene código. Los módulos permiten dividir un código grande en partes más pequeñas y manejables. Cada módulo puede contener funciones, clases y variables, y también ejecutar cierto código al ser importado.

Ejemplo de un módulo simple

Vamos a crear un módulo mymodule.py:


# mymodule.py

def greet(name):
    return f"Hello, {name}!"
            
pi = 3.14159
        

Ahora este módulo se puede importar y usar en otro archivo.

1.2 Importación de módulos

Python ofrece varias formas de importar módulos. Vamos a verlas una a una.

Importar todo el módulo

La sintaxis general de esta operación es la siguiente:


import módulo

Este método importa todo el módulo, y puedes usar sus funciones y variables indicando el nombre del módulo.


import módulo

print(módulo.greet("Alice"))  # Salida: Hello, Alice!
print(módulo.pi)  # Salida: 3.14159
        

Ya hicimos algo similar antes con el módulo math, ¿recuerdas?


import math

print(math.ceil(13 / 7))  # redondeo hacia arriba
print(math.floor(13 / 7))  # redondeo hacia abajo
        

Importar elementos específicos de un módulo

Puedes importar no todo lo que hay en el módulo, sino solo algunos de sus elementos. La sintaxis general de esta operación es la siguiente:


from módulo import func, var

Este método importa solo ciertas funciones, clases o variables del módulo, permitiendo usarlas sin indicar el nombre del módulo.


from mymodule import greet, pi

print(greet("Bob"))  # Salida: Hello, Bob!
print(pi)  # Salida: 3.14159
        

Importar módulo con un alias

La sintaxis general de esta operación es la siguiente:


import módulo as alias

Este método permite importar un módulo y asignarle otro nombre, lo cual puede ser útil para acortar nombres de módulos largos o resolver conflictos de nombres.


import mymodule as mm

print(mm.greet("Charlie"))  # Salida: Hello, Charlie!
print(mm.pi)  # Salida: 3.14159
        

Importar todos los elementos de un módulo

La sintaxis general de esta operación es la siguiente:


from módulo import *

Este método importa todas las funciones, clases y variables del módulo, permitiendo usarlas sin indicar el nombre del módulo. Sin embargo, no se recomienda usar este método, ya que puede causar conflictos de nombres y dificultar la lectura del código.


from mymodule import *

print(greet("Dave"))  # Salida: Hello, Dave!
print(pi)  # Salida: 3.14159
        

1.3 Bajo el capó del proceso de importación

Orden de búsqueda de módulos

Cuando importas un módulo, Python lo busca en un orden específico:

  1. Directorio actual: Python primero busca el módulo en el directorio actual desde donde se ha ejecutado el script.
  2. Variable de entorno PYTHONPATH: Si el módulo no se encuentra en el directorio actual, Python lo busca en los directorios indicados en la variable de entorno PYTHONPATH.
  3. Directorios estándar: Si el módulo aún no se encuentra, Python lo busca en los directorios estándar, tales como los directorios indicados en sys.path.

Ejemplo:


import sys

for path in sys.path:
    print(path)
        

Importación local y global

Los módulos pueden ser importados tanto a nivel global (al inicio del archivo) como a nivel local (dentro de una función o método).

Importación global

La importación global se realiza al inicio del archivo y hace que el módulo importado esté disponible en todo el archivo.


import math

def calculate_circle_area(radius):
    return math.pi * radius ** 2
        

Importación local

La importación local se realiza dentro de una función o método y hace que el módulo importado esté disponible solo en esa función o método.


def calculate_square_root(x):
    import math
    return math.sqrt(x)
    
print(calculate_square_root(16))
        

La importación local puede ser útil para reducir el tiempo de carga de un módulo o para prevenir conflictos de nombres.

1.4 Importación dinámica

La importación dinámica permite importar módulos durante el tiempo de ejecución del programa. Esto puede ser útil cuando es necesario importar módulos basados en la entrada del usuario u otras condiciones dinámicas.

La sintaxis general de esta operación es la siguiente:


module = __import__("módulo")

Vamos a importar el módulo math de esta manera como ejemplo.


module_name = "math"
module = __import__(module_name)
print(module.sqrt(16))  # Salida: 4.0

Trabajar con el código siguiente es como usar import as, donde al módulo math se le asigna el alias module.

1.5 Acceso a atributos de módulos utilizando la función getattr

La función getattr permite obtener dinámicamente atributos de un módulo (o cualquier objeto). Puede ser útil en los casos en que los nombres de los atributos son desconocidos de antemano o pueden cambiar durante la ejecución del programa.

Sintaxis de la función getattr:


getattr(object, name, default = None)

Donde object es el objeto del cual se desea obtener un atributo, name es una cadena que contiene el nombre del atributo, y default es el valor que se devuelve si el atributo con el nombre dado no existe. El valor por defecto para el parámetro default es None.

Ejemplo de uso de la función getattr:


import math

# Obtenemos el atributo sqrt del módulo math
sqrt_function = getattr(math, 'sqrt')

print(sqrt_function(25))  # Salida: 5.0

# Intentamos obtener un atributo inexistente, devolviendo el valor por defecto
non_existent_attr = getattr(math, 'non_existent', 'default_value')

print(non_existent_attr)  # Salida: default_value
        

En este ejemplo usamos la función getattr para obtener la función sqrt del módulo math, y luego llamamos a esta función para calcular la raíz cuadrada del número 25. En caso de que el atributo con el nombre dado no exista, se devuelve el valor por defecto default_value.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION