¿Qué hace if __name__ == “__main__”:?

Antes de ejecutar el código, el intérprete de Python lee el archivo fuente y define algunas variables especiales/variables globales. 
Si el intérprete de python está ejecutando ese módulo (el archivo fuente) como el programa principal, establece la variable especial __name__ para que tenga un valor «__main__» . Si este archivo se importa desde otro módulo, __name__ se establecerá en el nombre del módulo. El nombre del módulo está disponible como valor para la variable global __name__. 

Un módulo es un archivo que contiene definiciones y declaraciones de Python. El nombre del archivo es el nombre del módulo con el sufijo .py adjunto. 

Cuando ejecutamos el archivo como comando para el intérprete de python,  

python script.py

Python3

# Python program to execute
# main directly
print ("Always executed")
 
if __name__ == "__main__":
    print ("Executed when invoked directly")
else:
    print ("Executed when imported")
  • Todo el código que está en el nivel de sangría 0 [Bloque 1] se ejecuta. Las funciones y clases que están definidas están, bueno, definidas, pero ninguno de sus códigos se ejecuta.
  • Aquí, como ejecutamos script.py directamente, la variable __name__ será __main__ . Entonces, el código en este bloque si [Bloque 2] solo se ejecutará si ese módulo es el punto de entrada a su programa. 
  • Por lo tanto, puede probar si su script se está ejecutando directamente o si lo está importando otra cosa probando la variable __name__.
  • Si algún otro módulo está importando el script en ese momento , __name__ será el nombre del módulo.

¿Por qué lo necesitamos?

Por ejemplo, estamos desarrollando un script que está diseñado para usarse como módulo:

Python3

# Python program to execute
# function directly
def my_function():
    print ("I am inside function")
 
# We can test function by calling it.
my_function()

Ahora, si queremos usar ese módulo importando, tenemos que comentar nuestra llamada. En lugar de ese enfoque, el mejor enfoque es usar el siguiente código: 

Python3

# Python program to use
# main for function call.
if __name__ == "__main__":
    my_function()
 
import myscript
 
myscript.my_function()

ventajas : 

  1. Cada módulo de Python tiene su __nombre__ definido y si es ‘__principal__’, implica que el usuario está ejecutando el módulo de forma independiente y que podemos realizar las acciones apropiadas correspondientes.
  2. Si importa este script como un módulo en otro script, el __name__ se establece en el nombre del script/módulo.
  3. Los archivos de Python pueden actuar como módulos reutilizables o como programas independientes.
  4. if __name__ == “main”: se usa para ejecutar algún código solo si el archivo se ejecutó directamente y no se importó.

Este artículo es una contribución de Nirmi Shah . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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