Module (28%)
Section (28%)

Tu primer módulo: continuación

Ahora hemos puesto algo en el archivo del módulo:

module.py con una función de impresión que contiene la cadena: 'Me gusta ser un módulo.'


¿Puedes notar alguna diferencia entre un módulo y un script ordinario? No hay ninguna hasta ahora.

Es posible ejecutar este archivo como cualquier otro script. Pruébalo por ti mismo.

¿Que es lo que pasa? Deberías de ver la siguiente línea dentro de tu consola:

Me gusta ser un módulo.

Volvamos al archivo main.py:

main.py contiene la instrucción import module


Ejecuta el archivo. ¿Que ves? Con suerte, verás algo como esto:

Me gusta ser un módulo.

¿Qué significa realmente?

Cuando un módulo es importado, su contenido es ejecutado implícitamente por Python. Le da al módulo la oportunidad de inicializar algunos de sus aspectos internos (por ejemplo, puede asignar a algunas variables valores útiles). Nota: la inicialización se realiza solo una vez, cuando se produce la primera importación, por lo que las asignaciones realizadas por el módulo no se repiten innecesariamente.

Imagina el siguiente contexto:

  • Existe un módulo llamado mod1.
  • Existe un módulo llamado mod2 el cual contiene la instrucción import mod1.
  • Hay un archivo principal que contiene las instrucciones import mod1 y import mod2.

A primera vista, se puede pensar que mod1 será importado dos veces - afortunadamente, solo se produce la primera importación. Python recuerda los módulos importados y omite silenciosamente todas las importaciones posteriores.




Python puede hacer mucho más. También crea una variable llamada __name__.

Además, cada archivo fuente usa su propia versión separada de la variable, no se comparte entre módulos.

Te mostraremos cómo usarlo. Modifica el módulo un poco:

module.py contiene dos lineas de código - la primera linea: print('Me gusta ser un módulo.'), y la segunda: print(__name__)

Ver código en Sandbox

Ahora ejecuta el archivo module.py. Deberías ver las siguientes líneas:

Me gusta ser un módulo. __main__

Ahora ejecuta el archivo main.py. ¿Y? ¿Ves lo mismo que nosotros?

Me gusta ser un módulo. module

Podemos decir que:

  • Cuando se ejecuta un archivo directamente, su variable __name__ se establece a __main__.
  • Cuando un archivo se importa como un módulo, su variable __name__ se establece al nombre del archivo (excluyendo a .py).

Así es como puedes hacer uso de la variable __main__ para detectar el contexto en el cual se activó tu código:

module.py contiene una declaración condicional

Ver código en Sandbox

Sin embargo, hay una forma más inteligente de utilizar la variable. Si escribes un módulo lleno de varias funciones complejas, puedes usarla para colocar una serie de pruebas para verificar si las funciones trabajan correctamente.

Cada vez que modifiques alguna de estas funciones, simplemente puedes ejecutar el módulo para asegurarte de que sus enmiendas no estropeen el código. Estas pruebas se omitirán cuando el código se importe como un módulo.