2010-06-08 38 views

Respuesta

34

Un script generalmente es un fragmento de código ejecutable directamente, ejecutado por sí mismo. Un módulo generalmente es una biblioteca, importada por otras piezas de código.

Tenga en cuenta que no hay distinción interna, ambos son ejecutables e importables, aunque el código de la biblioteca a menudo no hará nada (o solo ejecutará sus pruebas unitarias) cuando se ejecute directamente y la importación de código diseñado para ser un script lo causará para ejecutar, de ahí la prueba común if __name__ == "__main__".

+2

+1: "sin distinción interna". Es solo cómo lo usas. –

+2

Sí. Además, mientras hablemos de distinciones, lo llamaría un programa (no un guión) a menos que su uso principal fuera guiar las acciones de otros programas. –

10

Cualquier módulo de Python se puede ejecutar como una secuencia de comandos. La única diferencia significativa es que cuando se importa como un módulo, el nombre de archivo se utiliza como base para el nombre del módulo, mientras que si se ejecuta como un script, el módulo se llama __main__.

Esta distinción permite tener un comportamiento diferente cuando se importa al encerrar código específico de script en un bloque protegido por if __name__=="__main__". Se sabe que esto causa confusión cuando un usuario intenta importar el módulo principal con su propio nombre en lugar de importar __main__.

Una pequeña diferencia entre los scripts y los módulos es que cuando se importa un módulo, el sistema intentará usar un archivo .pyc existente (si existe y está actualizado y para esa versión de Python) y si tiene que compilar desde un archivo .py, intentará guardar un archivo .pyc. Cuando ejecuta un archivo .py como script, no intenta cargar un módulo previamente compilado, ni intenta guardar el código compilado. Por esta razón, puede valer la pena mantener los scripts pequeños para minimizar el tiempo de inicio.

+0

Sugiero reemplazar la frase * ejecutada como una secuencia de comandos * por solo * ejecutada *, tal vez también las apariciones restantes de * script * por * programa * como se sugiere en el [comentario de ʇsәɹoɈ] * (https://stackoverflow.com/ preguntas/2996110/what-is-the-difference-between-a-module-and-a-script-in-python # comment3060238_2996170) – Wolf

Cuestiones relacionadas