Cómo crear, importar y reutilizar su propio módulo en Python

Ya sea que sea un experto o un novato en la programación de Python, debe estar familiarizado con el comando de importación de módulos . Sin embargo, como recién llegado, es posible que no tenga una idea de dónde provienen esos módulos.

Echemos un vistazo más profundo para comprender el origen de esos módulos, junto con cómo crearlos e importarlos para su reutilización.

Una de las mejores prácticas cuando se trabaja con la mayoría de los lenguajes del lado del servidor es modular su código para que sea reutilizable. Dado que Python está orientado a objetos, es uno de esos lenguajes que hace posible la reutilización del código.

La modularización de código implica escribir código que ejecuta varias instrucciones en bloques. Se utiliza para separar actividades entre sí.

Cuando modulariza un código, le da un nombre único. Ese nombre es su identidad, y significa que la próxima vez que necesite usar ese bloque de código, solo tendrá que llamar su nombre y no el código completo.

Esta práctica hace que su trabajo sea mucho más fácil y rápido mientras se encuentra en un proyecto de la vida real. La modularización del código también mejora la velocidad de ejecución y simplifica las pruebas. Esencialmente, hace que su código sea más eficiente y legible.

Si bien nuestro ejemplo aquí no se basa en la programación orientada a objetos (OOP), necesitamos discutir esto brevemente antes de pasar a la creación de un módulo.

El código que pretende reutilizar a veces puede ser independiente como funciones individuales. Pero también puede ser en forma de métodos en una clase . Aquí es donde entra en juego el concepto de POO.

OOP es la presentación de códigos como objetos independientes en forma de clase. Por tanto, cada objeto tiene sus propios atributos y métodos.

Estos atributos son las características de la clase, mientras que cada método define el comportamiento de los atributos.

En lugar de escribir un código extenso que es menos eficiente, una convención en la programación de procedimientos, su código se vuelve más eficiente y específico en OOP. La razón es que las funciones y los datos se almacenan en clases independientes en OOP, a diferencia de la separación de ambos en la programación procedimental.

Cada clase que creas adquiere una identidad. Entonces, cuando necesite un módulo nombrado por una clase, asígnele un nombre con referencia a esa clase.

Para una mejor comprensión, consulte nuestra guía para principiantes para comprender la POO .

Continuando, echemos un vistazo a cómo reutilizar la función para un contador de palabras en otro archivo de Python. Esta guía solo se centrará en crear funciones reutilizables que no estén dentro de un objeto.

En primer lugar, abra un símbolo del sistema en cualquier lugar de su computadora para iniciar un nuevo proyecto. En este caso, usaremos un nombre de proyecto de word_count . Para hacer esto, escriba mkdir word_count .

A continuación, utilice su herramienta de entorno virtual favorita para crear un nuevo entorno virtual . Si ya ha creado uno, simplemente actívelo. Asegúrese de estar todavía en el directorio de su proyecto.

Como buena práctica, para crear la función de contador de palabras, primero intentemos encontrar una fórmula sin procesar para calcularla. Por lo general, puede encontrar un recuento de palabras agregando uno al número de espacios en una oración. Tenga en cuenta que, si bien es posible que no necesite un recuento de palabras, lo que importa para esta explicación es cómo se relaciona la idea con la reutilización del código.

Luego, abra un editor de texto en la ubicación de su proyecto y cree un nuevo archivo Python. En este caso, el archivo se llama wordcounter.py ; asegúrese de que está utilizando la extensión .py correcta.

Así es como se ve el archivo wordcounter :

Ahora que el código en bruto está funcionando, modulémoslo creando una función que haga que el código sea reutilizable:

Eso es todo; hemos creado un módulo contador de palabras. Veamos cómo reutilizarlo.

Recuerde que anteriormente creó un archivo llamado wordcounter.py . Ese archivo contiene una función llamada CountWords . Si necesita esa función en un archivo nuevo y no desea reescribir todo el código o la función, todo lo que necesita hacer es importar esa función como un módulo en su nuevo archivo.

Tenga en cuenta que todos sus archivos de Python deben estar en el mismo directorio en este caso. Para asegurarse de que este sea el caso, cree un nuevo archivo Python en el mismo directorio donde tiene el archivo wordcounter.py .

Así es como se ve el nuevo archivo:

En el fragmento de arriba, CountWords es la función dentro del archivo wordcounter.py . Para reutilizar esa función en un nuevo archivo de Python, lo importamos desde su archivo principal ( wordcounter.py ).

¿Qué pasa si el nuevo archivo no está en el mismo directorio que el archivo del módulo? En estos casos, debe hacer referencia al formulario mediante una importación absoluta.

Para entender esto un poco más, supongamos que ha creado un nuevo archivo en el directorio de su proyecto. Pero el archivo desde el que desea importar la función (que es wordcounter , en este caso), se encuentra en otra carpeta dentro del directorio de su proyecto; llamémoslo subword_count .

Para importar su módulo de wordcounter (que ahora está en la carpeta subword_count ) a un nuevo archivo de Python, es absolutamente necesario llamarlo. Para ver cómo funciona esto, cree un nuevo archivo en el directorio de su proyecto, asígnele su nombre preferido e importe su módulo como está escrito en el fragmento de código a continuación:

Durante una importación absoluta, Python explora la carpeta raíz ( subword_count en este caso) y localiza el archivo o módulo que contiene la función de interés ( CountWords ).

Para desglosar el significado de la importación absoluta anterior, subword_count es una carpeta en el directorio del proyecto que contiene el archivo wordcounter.py . Ese archivo luego contiene la función CountWords .

Modularizar y reutilizar código es una práctica recomendada para cualquier proyecto en ejecución. Si escribe OOP, lo que probablemente hará a menudo, puede importar una clase desde un módulo o llamar a una función desde una clase. Si la clase está en una carpeta, impórtela absolutamente a su nuevo archivo.

La misma práctica se aplica a funciones que no están en un objeto. Dependiendo del diseño de su proyecto, puede
importarlos explícita o absolutamente, como hicimos anteriormente.