Una introducción a la variable _ _name_ _ y su uso en Python
Lo más probable es que haya visto la __name__
variable cuando haya revisado el código Python. A continuación, verá un fragmento de código de ejemplo de cómo puede verse:
if __name__ == '__main__': main()
En este artículo, quiero mostrarte cómo puedes hacer uso de esta variable para crear módulos en Python.
¿Por qué se utiliza la variable _ _name_ _?
La __name__
variable (dos guiones bajos antes y después) es una variable especial de Python. Obtiene su valor dependiendo de cómo ejecutemos el script que lo contiene.
A veces, escribe un script con funciones que también pueden ser útiles en otros scripts. En Python, puede importar ese script como un módulo en otro script.
Gracias a esta variable especial, puede decidir si desea ejecutar el script. O que desea importar las funciones definidas en el script.
¿Qué valores puede contener la variable __name__?
Cuando ejecuta su secuencia de comandos, la __name__
variable es igual a __main__
. Cuando importe el script que lo contiene, contendrá el nombre del script.
Echemos un vistazo a estos dos casos de uso y describamos el proceso con dos ilustraciones.
Escenario 1: ejecutar el script
Supongamos que escribimos el guiónnameScript.py
como sigue:
def myFunction(): print 'The value of __name__ is ' + __name__
def main(): myFunction()
if __name__ == '__main__': main()
Si ejecuta nameScript.py, se sigue el proceso siguiente.

Antes de que se ejecute el resto del código, la __name__
variable se establece en __main__. Después de eso, elmain
y myFunction
se ejecutan declaraciones def. Dado que la condición se evalúa como verdadera, se llama a la función principal. Esto, a su vez, llama myFunction. Esto imprime el valor de __main__
.
Escenario 2: importar el script en otro script
Si queremos reutilizar myFunction en otro script, por ejemplo importingScript.py
, podemos importar nameScript.py
como módulo.
El código importingScript.py
podría ser el siguiente:
import nameScript as ns
ns.myFunction()
Luego tenemos dos alcances: uno de importingScript
y el segundo alcance de nameScript
. En la ilustración, verá en qué se diferencia del primer caso de uso.

En importingScript.py, la __name__
variable se establece en __main__. Al importar nameScript, Python comienza a buscar un archivo agregando .py
al nombre del módulo. Luego ejecuta el código contenido en el archivo importado.
Pero esta vezestá configurado en nameScript. De nuevo se ejecutan las declaraciones def para main y myFunction. Pero ahora la condición se evalúa como falsa y no se llama a main.
En importingScript.py llamamos myFunction que genera nameScript. NameScript es conocido por myFunction cuando se definió esa función.
Si imprimiera __name__
en el script importing, esto saldría __main__
. La razón de esto es que Python usa el valor conocido en el alcance de importingScript.
Conclusión
En este breve artículo, expliqué cómo puede usar la __name__
variable para escribir módulos. También puede ejecutar estos módulos por su cuenta. Esto se puede hacer haciendo uso de cómo cambian los valores de estas variables dependiendo de dónde ocurren.