Esta es la pregunta de novato más grande del planeta, pero no estoy seguro. He escrito un conjunto de funciones que realizan algunas tareas, y quiero una función "principal" que, por ejemplo, cuando llamo "someProgram.py", ejecuto function1, function2 y quit. Recuerdo vagamente algo sobre "principal", pero no tengo ni idea.Después de dividir un programa python en funciones, ¿cómo hago que una sea la función principal?
Respuesta
scripts de Python no son colecciones de funciones, sino más bien colecciones de declaraciones - de función y de clase definiciones son sólo declaraciones que se unen los nombres de función o de clase objetos.
Si coloca una instrucción de impresión en la parte superior o en la mitad de su programa, se ejecutará normalmente sin estar en ninguna función. Lo que esto significa es que podrías poner todo el código principal al final del archivo y se ejecutará cuando se ejecute el script. Sin embargo, si su script alguna vez es importado en lugar de ejecutarse directamente, ese código también se ejecutará. Por lo general, esto no es lo que quieres, así que deberías evitarlo.
Python proporciona la variable global __name__
para diferenciar cuando un script se importa y ejecuta directamente: se establece en el nombre con el que se ejecuta el script. Si el script se importa, será el nombre del archivo de script. Si se ejecuta directamente, será "__main__"
. Entonces, puede poner un if __name__ == '__main__':
en la parte inferior de su programa, y todo dentro de este bloque si se ejecutará solo si el script se ejecuta directamente.
Ejemplo.
if __name__ == "__main__":
the_function_I_think_of_as_main()
Sentí la necesidad de agregar a esta excelente respuesta. –
+1. '__name__' es en realidad el nombre del módulo" actual "que funciona (no accidentalmente, estoy seguro) convenientemente para' __main__' (que es especial, pero sigue siendo un módulo). Esto es práctico combinado con el registro o http://stackoverflow.com/questions/2000861/retrieve-module-object-from-stack-frame/2011168#2011168 –
if __name__ == '__main__':
run_main()
Esto realmente no responde la pregunta tal como está escrita, está respondiendo "¿cómo hago para que mi función principal no se ejecute cuando se importa mi módulo?". Si ya tiene una función 'run_main', todo lo que necesita hacer es llamarlo. La respuesta de Max S es preferible a mí. –
Cuando un módulo de Python se importa por primera vez, es el bloque principal se ejecuta. Se puede distinguir entre ser dirigido por sí mismo y que se importa en otro programa:
if __name__ == "__main__":
function1()
function2()
else:
# loaded from another module
Cuando leo su pregunta, usted pregunta cómo definir una función principal. Que realmente se llevaría a cabo con algo como:
def main():
function1()
function2()
return 0
Y allí tendría que poner el código algo así como funciones de todo esto de tu archivo principal en el exterior:
if __name__ == "__main__":
sys.exit(main())
(Por supuesto, usted necesita un import sys algún lugar de la arriba para trabajar.)
A (ahora es un poco viejo, pero sigue siendo relevante) post from Guido dice más.
'return 0'? Esto es Python, no C :). –
¿Cuál es el problema? No causa ningún error y le dice al sistema operativo que saliste sin falla, por lo que se considera una buena práctica en al menos algunos círculos. – GreenMatt
Lo sentimos, tienes razón. No lo leí en el contexto de 'sys.exit'. –
- 1. En Node.js, ¿cómo hago que una llamada de servidor sea una función en otro servidor?
- 2. ¿Cómo hago que una plantilla sea condicional en función del tamaño de una colección?
- 3. ¿Se garantiza que la función sorted() de python sea estable?
- 4. ¿Cómo hago que la búsqueda de Xpath sea insensible?
- 5. ¿Cómo encuentro la función principal (...) de mi programa?
- 6. Python cómo salir de la función principal
- 7. ¿Cómo hago que una aplicación ASP.NET MVC sea multilingüe?
- 8. ¿Cómo hago que un MKAnnotationView sea sensible al tacto?
- 9. ¿Cómo hago que mi comparación de cadenas sea insensible?
- 10. ¿Cómo hago un programa de OCR?
- 11. Cómo escribir un contenedor sobre funciones y funciones miembro que ejecuta algún código antes y después de la función envuelta?
- 12. Importar la función C++ al programa Python
- 13. ¿Cómo const después de una función optimizar el programa?
- 14. ¿Cómo dividir un programa en C en varios archivos?
- 15. python: cómo finalizar un hilo cuando finaliza el programa principal
- 16. ¿Cómo llamaría una función de biblioteca cargada a un símbolo en la aplicación principal?
- 17. ¿Cómo hago que mi JSON sea menos detallado?
- 18. ¿Cómo hago que el aspecto negativo de Python sea menos codicioso?
- 19. saliendo de funciones en el principal
- 20. ¿cómo hago que un elemento sea un niño en sí mismo en XML Schema?
- 21. Formato de función en un programa C
- 22. dividir una cadena en Python
- 23. procesando un seq hasta que una función pred sea verdadera
- 24. gprof: ¿Cómo generar gráfico de llamadas para las funciones de biblioteca compartida que está vinculado al programa principal
- 25. ¿Cómo hago para que la primera letra de una cadena sea mayúscula?
- 26. ¿cómo hago que este preg_match no sea sensible?
- 27. ¿Qué entra en la función principal?
- 28. ¿Cómo anulo las funciones de una clase padre en python?
- 29. ¿Cómo puedo dividir un archivo en python?
- 30. ¿Cómo hago una solicitud PATCH en Python?
+1 ¡Es una pregunta increíble para novatos! –