Función principal de Python

En este tutorial, aprenderemos cómo usar el atributo __name__ de un programa Python para ejecutarlo dinámicamente en diferentes contextos.

¿Cuál es la función main () en Python?

Algunos lenguajes de programación tienen una función especial llamada main()que es el punto de ejecución de un archivo de programa. El intérprete de Python, sin embargo, ejecuta cada línea en serie desde la parte superior del archivo y no tiene una main()función explícita .

Python ofrece otras convenciones para definir el punto de ejecución. Uno de ellos está usando la main()función y la propiedad __name__ de un archivo python.

¿Qué es __name__ en Python?

La variable __name__ es una variable de Python incorporada especial que muestra el nombre del módulo actual.

Tiene diferentes valores dependiendo de dónde ejecutemos el archivo Python. Veamos un ejemplo.

Ejecutar archivo de Python como una secuencia de comandos

Supongamos que tenemos un archivo de Python llamado helloworld.py con el siguiente contenido:

 print(__name__) 

Si ejecutamos helloworld.py desde la línea de comandos, se ejecutará como un script de Python. Podemos ejecutar el programa Python usando el siguiente comando:

$ python helloworld.py

Cuando ejecutamos el programa como un script, el valor de la variable __name__ se establece en __main__. Entonces, la salida del siguiente programa será:

 __principal__ 

Ejecutando el archivo Python como un módulo

También podemos ejecutar un archivo Python como módulo. Para ello, tenemos que importar este archivo a otro programa de Python. Veamos un ejemplo.

Supongamos que tenemos un archivo Python llamado main.py en el mismo directorio que el archivo heloworld.py. Tiene el siguiente contenido:

 import helloworld 

Cuando ejecutamos este archivo, tendremos el siguiente resultado:

 Hola Mundo 

Aquí, podemos ver que la importación de un módulo también ejecuta todo el código en el archivo del módulo.

Pero, podemos ver que en lugar de mostrar __main__, el programa muestra el nombre del módulo, es decir, helloworld.

Esto se debe a que, en el contexto de ejecutar un archivo Python como módulo, el nombre del módulo en sí se asigna a la variable __name__.

Usando if condicional con __name__

Ahora que hemos entendido cómo se asignan valores a la variable __name__, podemos usar la ifcláusula condicional para ejecutar el mismo archivo Python de manera diferente en diferentes contextos.

Veamos un ejemplo.

Supongamos que cambiamos el contenido del archivo helloworld.py a lo siguiente:

 def main(): print("Hello World") if __name__=="__main__": main() 

Ahora, cuando lo ejecutamos como un script a través de la línea de comando, el resultado será:

 Hola Mundo 

Sin embargo, cuando lo ejecutamos como un módulo importándolo en el archivo main.py , no se muestra ningún resultado ya que main()no se llama a la función.

Aquí, hemos creado una main()función personalizada en el archivo helloworld.py . Se ejecuta solo cuando el programa se ejecuta como un script independiente y no como un módulo importado.

Esta es la forma estándar de definir explícitamente la main()función en Python. Es uno de los casos de uso más populares de la variable __name__ de un archivo Python.

Articulos interesantes...