Paquetes Java vs Python

Hace muchos años aprendí Java. Recuerdo que me llamó mucho la atención y me pareció excesivamente rebuscado el tema de los paquetes (package). Había que crear una estructura de directorios similar a la estructura de paquetes que queremos. Es decir, si una clase está en package com.chuidiang.ejemplos, debemos crear un directorio «com», dentro de el un subdirectorio «chuidiang», dentro de él un subdirectorio «ejemplos» y dentro de este, finalmente, el fichero .java con la clase.

Últimamente estoy en proceso de aprender Python y ponerlo en un curso de python. Justamente ayer me entretuve con el tema de módulos y paquetes en Python. Y cual no fue mi sorpresa que he encontrado muchas similitudes con Java.

En Python también debes crear una estructura de directorios similar a cómo quieras organizar los paquetes.  A los ficheros Python que pongas ahí no hace falta ponerles nada similar a package, como en Java. Basta con que esté ubicados en el subdirectorio que corresponda.

Y en Python, al igual que en Java, para usar algo que está en un paquete (en un subdirectorio de una estructura de directorios), tienes un import. Por supuesto, hay diferencias entre Java y Python, pero el concepto es el mismo, hacer un import de lo que quieras usar.

¿Diferencias?. En Java, una vez haces el import, puedes usar las clases de ese paquete en tu código sin necesidad de ponerles el prefijo del paquete. En Python haces el import pero tienes que seguir usando el prefijo del paquete.

¿Qué es mejor?. Bueno, en principio es más cómodo lo de Java, pero en Python tienes posibilidad de hacerlo similar, con un poco más de trabajo. Tienes from <paquete> import as <nombre>. Haciéndolo así, puedes usar <nombre> sin necesidad de prefijo. E incluso puedes elegir un nombre que no sea el original y cambiarlo. En Java, si hay conflicto porque el mismo nombre está en dos paquetes distintos, en  uno de ellos tienes que añadir todo el prefijo. En Python puedes simplemente cambiarlo de nombre sobre la marcha. Requiere más esfuerzo por tu parte para mantener un sistema de nombres coherente, pero luego es más cómodo de usar.

En fin, salvo algunas diferencias de uso, me ha llamado la atención que la idea básica sea la misma: estructura de directorios y subdirectorios para meter las cosas, que a su vez componen el nombre del paquete. Y la necesidad de hacer el import, cosa lógica por otro lado, no va a estar todo visible para todos si no lo necesitan.

Entradas relacionadas:

Esta entrada ha sido publicada en java, python y etiquetada como , , , . Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.