CodeGym /Curso de Java /Python SELF ES /Creación de tu propio paquete

Creación de tu propio paquete

Python SELF ES
Nivel 19 , Lección 1
Disponible

2.1 Introducción a los paquetes

Los paquetes son una forma de estructurar módulos en directorios. Un paquete es un directorio que contiene un archivo __init__.py y uno o más módulos. El archivo __init__.py puede estar vacío o contener código de inicialización del paquete.

Ejemplo de estructura de un paquete/directorio


mypackage/
    __init__.py
    module1.py
    module2.py
Contenido del archivo __init__.py

# __init__.py
from .module1 import func1
from .module2 import func2
Contenido del archivo module1.py

# module1.py
def func1():
    return "Function 1"
Contenido del archivo module2.py

# module2.py
def func2():
    return "Function 2"

Ejemplo de código que usa las funciones de este paquete:


import mypackage

print(mypackage.func1())  # Salida: Function 1
print(mypackage.func2())  # Salida: Function 2

Vamos a intentar escribir nuestro propio paquete a continuación, y a la vez entender cómo funcionan los ajenos.

2.2 Creamos nuestro paquete paso a paso

Paso 1: Creación de la estructura del paquete

El primer paso es crear la estructura de directorios y archivos para tu paquete. Como ejemplo, vamos a crear un paquete llamado mypackage, que contiene dos módulos: module1.py y module2.py.

Ejemplo de estructura del paquete:


mypackage/
    __init__.py
    module1.py
    module2.py

Descripción de los archivos:

  • __init__.py: Este archivo puede estar vacío o contener código de inicialización del paquete. Es necesario para que Python considere el directorio como un paquete.
  • module1.py y module2.py: Estos archivos contienen funciones, clases y variables que quieres incluir en tu paquete.

Paso 2: Escritura del código para los módulos

Escribamos un código sencillo para nuestros módulos.

module1.py


def func1():
    return "Function 1 from module1"

module2.py


def func2():
    return "Function 2 from module2"

__init__.py

Para importar funciones desde nuestros módulos al nivel del paquete, las añadimos en __init__.py.


from .module1 import func1
from .module2 import func2

Ahora, cuando importas el paquete, las funciones func1 y func2 estarán disponibles directamente.

Paso 3: Pruebas del paquete

Crea un archivo test.py en el mismo directorio donde se encuentra el directorio mypackage, y usa el paquete en este archivo para las pruebas.

test.py


import mypackage

print(mypackage.func1())  # Salida: Function 1 from module1
print(mypackage.func2())  # Salida: Function 2 from module2

Ejecuta test.py para asegurarte de que tu paquete funciona correctamente.

2.3 Uso de la función dir()

Cuando importas un módulo o paquete, puedes usar la función dir() para obtener una lista de todos los atributos y métodos disponibles en ese módulo. Esto es especialmente útil si estás trabajando con un módulo nuevo o desconocido y quieres rápidamente saber qué funciones y clases proporciona.

Ejemplo: Exploración del módulo estándar math

Veamos un ejemplo de uso de dir() para explorar el módulo estándar math.


import math

print(dir(math))

Este código importa el módulo math y muestra una lista de todos los atributos y métodos disponibles. El resultado se verá algo así:


['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod',
'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

Esta lista incluye todas las funciones y constantes definidas en el módulo math, como sin, cos, tan, pi y otras.

Uso de dir() para módulos personalizados

También puedes usar dir() para módulos personalizados (los tuyos). Supongamos que tienes un archivo mymodule.py con el siguiente contenido:


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

Puedes importar este módulo y usar dir() para explorar su contenido:


import mymodule

print(dir(mymodule))

El resultado será el siguiente:


['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 
'greet', 'pi']

La lista incluye 8 atributos internos (subrayados) del módulo mymodule, y al final están tu método greet y variable pi.

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