English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderemos a ejecutar dinámicamente el programa de Python usando la propiedad __name__ en diferentes contextos.
Algunos lenguajes de programación tienen una función especial llamada main(), que es el punto de ejecución del archivo del programa. Sin embargo, el intérprete de Python ejecuta cada línea del archivo desde la parte superior en orden y sin función main() explícita.
Python proporciona otras convenciones para definir el punto de ejecución. Una de ellas es usar la función main() del archivo python y la propiedad __name__.
__name__ es una variable especial incorporada en Python que muestra el nombre del módulo actual.
dependiendo de la ubicación en la que se ejecute el archivo de Python, tiene diferentes valores. Veamos un ejemplo.
supongamos que tenemos un archivohelloworld.pyel archivo de Python, con el siguiente contenido:
print(__name__)
si ejecutamos desde la línea de comandoshelloworld.py,entonces se ejecutará como script de Python. Podemos usar el siguiente comando para ejecutar programas de Python:
python helloworld.py
def foo(): str="__main__" print(str); if __name__ == "__main__": foo()
Cuando ejecutamos el programa como script, el valor de la variable __name__ se establece a__main__. Por lo tanto, la salida del siguiente programa será:
__main__
También podemos ejecutar el archivo Python como módulo. Para hacerlo, debemos importar este archivo en otro programa Python. Vamos a ver un ejemplo.
Supongamos que en el mismo directorio que el archivo heloworld.py hay un archivo llamadomain.pyEl archivo Python. Tiene el siguiente contenido:
import helloworld
La salida al ejecutar este archivo será:
helloworld
Aquí, podemos ver que también se ejecuta todo el código del archivo módulo al importar el módulo.
Pero, podemos ver que, en lugar de mostrar __main__, el programa mostrará el nombre del módulo, es decir helloworld.
Esto se debe a que, cuando se ejecuta el archivo Python como módulo, el nombre del módulo se asigna a la variable __name__.
Ahora que ya hemos entendido cómo se asigna el valor a la variable __name__, podemos usar la cláusula de condición if en diferentes contextos para ejecutar el mismo archivo Python de diferentes maneras.
Vamos a ver un ejemplo.
Supongamos quehelloworld.pyEl contenido del archivo se cambia al siguiente:
def main(): print("Hello World") if __name__ == "__main__": main()
Ahora, cuando lo ejecutamos como script desde la línea de comandos, la salida será:
Hello World
Pero, cuando lo importamosmain.pyCuando el archivo se ejecuta como módulo, no se muestra ningún output porque la función main() no se llama.
Aquí, creamos una función main() personalizada en el archivo helloworld.py. Esta función solo se ejecuta cuando el programa se ejecuta como script independiente y no como módulo importado.
Este es el método estándar para definir explícitamente la función main() en Python. Es uno de los casos de uso más populares de la variable __name__ del archivo Python.