Module (29%)
Section (29%)

Tu primer módulo: continuación

Este módulo contendrá dos funciones simples, y si deseas saber cuántas veces se han invocado las funciones, necesitas un contador inicializado en cero cuando se importa el módulo. Puedes hacerlo de esta manera:

module.py contiene una variable contador y una declaración condicional

Ver código en Sandbox

El introducir tal variable es absolutamente correcto, pero puede causar importantes efectos secundarios que debes tener en cuenta.

Analiza el archivo modificado main.py:

main.py con dos líneas de código, la primera: import module, la segunda: print(module.counter)

Ver código en Sandbox

Como puedes ver, el archivo principal intenta acceder a la variable de contador del módulo. ¿Es esto legal? Sí lo es. ¿Es utilizable? Claro. ¿Es seguro? Eso depende: si confías en los usuarios de tu módulo, no hay problema; sin embargo, es posible que no desees que el resto del mundo vea tu variable personal o privada.

A diferencia de muchos otros lenguajes de programación, Python no tiene medios para permitirte ocultar tales variables a los ojos de los usuarios del módulo. Solo puedes informar a tus usuarios que esta es tu variable, que pueden leerla, pero que no deben modificarla bajo ninguna circunstancia.

Esto se hace anteponiendo al nombre de la variable _ (un guión bajo) o __ (dos guiones bajos), pero recuerda, es solo un acuerdo. Los usuarios de tu módulo pueden obedecerlo o no.

Nosotros por supuesto, lo respetaremos. Ahora pongamos dos funciones en el módulo: evaluarán la suma y el producto de los números recopilados en una lista.

Además, agreguemos algunos adornos allí y eliminemos los restos superfluos.




El módulo está listo:

La versión final del archivo module.py

Ver código en Sandbox

Algunos elementos necesitan explicación:

  • La línea que comienza con #! desde el punto de vista de Python, es solo un comentario debido a que comienza con #. Para sistemas operativos Unix y similares a Unix (incluido MacOS), dicha línea indica al sistema operativo cómo ejecutar el contenido del archivo (en otras palabras, qué programa debe lanzarse para interpretar el texto). En algunos entornos (especialmente aquellos conectados con servidores web) la ausencia de esa línea causará problemas.
  • Una cadena (quizás una multilínea) colocada antes de las instrucciones de cualquier módulo (incluidas las importaciones) se denomina doc-string, y debe explicar brevemente el propósito y el contenido del módulo.
  • Las funciones definidas dentro del módulo (suml() y prodl()) están disponibles para ser importadas.
  • Se ha utilizado la variable __name__ para detectar cuándo se ejecuta el archivo de forma independiente.

Ahora es posible usar el nuevo módulo, esta es una forma de hacerlo:

main.py contiene el código que importa el nuevo módulo

Ver código en Sandbox