sirve que para name__ name main__ español ejemplo def __name__ __main__ python

python - que - ¿Qué es__main__.py?



para que sirve if__ name__== ''__ main__ (5)

¿Para qué sirve el archivo __main__.py , qué tipo de código debo ingresar y cuándo debo tener uno?


¿Para qué sirve el archivo __main__.py ?

Al crear un módulo de Python, es común hacer que el módulo ejecute alguna funcionalidad (generalmente contenida en una función main ) cuando se ejecuta como el punto de entrada del programa. Esto generalmente se hace con el siguiente idioma común ubicado en la parte inferior de la mayoría de los archivos de Python:

if __name__ == ''__main__'': # execute only if run as the entry point into the program main()

Puede obtener la misma semántica para un paquete de Python con __main__.py . Este es un indicador de shell de Linux, $ , si no tiene Bash (u otro shell de Posix) en Windows, simplemente cree estos archivos en demo/__<init/main>__.py with contents in between the EOF`s:

$ mkdir demo $ cat > demo/__init__.py << EOF print(''demo/__init__.py executed'') def main(): print(''main executed'') EOF $ cat > demo/__main__.py << EOF print(''demo/__main__.py executed'') from __init__ import main main() EOF

(En un shell de Posix / Bash, puede hacer lo anterior sin los << EOF s y terminar los EOF s ingresando Ctrl-D, el carácter de fin de archivo, al final de cada comando cat)

Y ahora:

$ python demo demo/__main__.py executed demo/__init__.py executed main executed

Usted puede derivar esto de la documentación. La documentation dice:

__main__ - entorno de script de nivel superior

''__main__'' es el nombre del ámbito en el que se ejecuta el código de nivel superior. El __name__ un módulo se establece igual a ''__main__'' cuando se lee desde una entrada estándar, un script o desde un indicador interactivo.

Un módulo puede descubrir si se está ejecutando o no en el ámbito principal al verificar su propio __name__ , que permite un lenguaje común para ejecutar condicionalmente el código en un módulo cuando se ejecuta como un script o con python -m pero no cuando se importa. :

if __name__ == ''__main__'': # execute only if run as a script main()

Para un paquete, se puede lograr el mismo efecto incluyendo un módulo __main__.py , cuyo contenido se ejecutará cuando el módulo se ejecute con -m .

Con cremallera

También puede empaquetar esto en un solo archivo y ejecutarlo desde la línea de comandos de esta manera, pero tenga en cuenta que los paquetes comprimidos no pueden ejecutar subpaquetes o submódulos como punto de entrada:

$ python -m zipfile -c demo.zip demo/* $ python demo.zip demo/__main__.py executed demo/__init__.py executed main() executed


A menudo, un programa Python se ejecuta al nombrar un archivo .py en la línea de comandos:

$ python my_program.py

También puede crear un directorio o archivo zip lleno de código, e incluir un __main__.py . Luego, simplemente puede nombrar el directorio o el archivo zip en la línea de comandos, y ejecuta __main__.py automáticamente:

$ python my_program_dir $ python my_program.zip # Or, if the program is accessible as a module $ python -m my_program

Tendrá que decidir por sí mismo si su aplicación podría beneficiarse de ser ejecutada de esta manera.

Tenga en cuenta que un módulo __main__ generalmente no proviene de un archivo __main__.py . Puede, pero por lo general no lo hace. Cuando ejecutas un script como python my_program.py , el script se ejecutará como el módulo __main__ lugar del módulo my_program . Esto también sucede con los módulos que se ejecutan como python -m my_module , o de varias otras formas.

Si vio el nombre __main__ en un mensaje de error, eso no significa necesariamente que deba buscar un archivo __main__.py .


Crea __main__.py en tu yourpackage para hacerlo ejecutable como:

$ python -m yourpackage


Si su script es un directorio o un archivo ZIP en lugar de un solo archivo de python, __main__.py se ejecutará cuando el "script" se pase como un argumento al intérprete de python.


__main__.py se utiliza para los programas de Python en archivos zip. El archivo __main__.py se ejecutará cuando se ejecute el archivo zip. Por ejemplo, si el archivo zip era como tal:

test.zip __main__.py

y el contenido de __main__.py era

import sys print "hello %s" % sys.argv[1]

Luego, si tuviéramos que ejecutar python test.zip world , obtendríamos hello world out.

Por lo tanto, el archivo __main__.py ejecuta cuando se llama a python en un archivo zip.