__name__, ¿Qué es __name__ en Python?

¿Qué es __name__ en Python?

__name__ en Python es una variable que puedes encontrar en muchos códigos hechos por la comunidad cuando estás comenzando a programar con Python. Esta variable se utiliza mucho para replicar la función main que otros lenguajes de programación como C, C+ o Java utilizan para iniciar la ejecución del programa.

En C++ el código comienza a ejecutarse a partir de la función main…

#include 
using namespace std;
int main() 
{
    cout << "Hello World!";
    return 0;
}

En python se genera el mismo comportamiento de la siguiente forma:


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

¿Esto por qué funciona?

  • Cuando Python lee un archivo con código ejecuta TODO lo que se encuentra en el archivo.
  • Cuando ejecutamos un archivo de Python directamente, sólo ese archivo genera una variable __name__ con el valor “__main__

Todos los archivos que forman parte del programa ejecutado tienen declarada una variable __name__ por defecto pero su valor es distinto dependiendo de cómo ejecutemos el programa, por ejemplo…

Si ejecutamos un script directamente:

> python script.py

Todo el código escrito en ese archivo puede acceder a la variable __name__ que tendrá de valor “__main__” debido a que lo ejecutamos directamente.

En cambio si dentro del archivo script.py importamos otro archivo llamado libreria.py la variable __name__ tendrá el valor “libreria” ya que es el nombre del script.

# En libreria.py
print(__name__)

# En script.py
import libreria

# > python script.py
libreria

Si corremos el archivo script.py imprimirá en pantalla “libreria“, ya que al hacer la importación ejecuta todo el código del archivo importado e imprimirá la variable __name__, al ser una ejecución indirecta no se asigna el valor “__main__“.

Si te interesa puedes conocer la información directamente desde su documentación oficial: link.

Conclusión

Podemos usar la variable __name__ para crear comportamiento diferente en nuestros programas a partir de la forma en que se está ejecutando.

Una de las razones para hacerlo es que, a veces, se escribe un módulo (un archivo .py) que se puede ejecutar directamente, pero que alternativamente, también se puede importar y reutilizar sus funciones, clases, métodos, etc en otro módulo.

Con esto conseguimos que la ejecución sea diferente al ejecutar el módulo directamente que al importarlo desde otro programa.

 

 

Deja un comentario

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