Любой модуль Python может быть выполнен как скрипт. Единственное существенное отличие состоит в том, что при импорте в качестве модуля имя файла используется в качестве основы для имени модуля, тогда как при выполнении его в качестве сценария модуль называется __main__
.
Это различие позволяет вести себя по-разному при импорте, заключая код, специфичный для скрипта, в блок, защищенный if __name__=="__main__"
. Известно, что это вызывает путаницу, когда пользователь пытается импортировать основной модуль под своим именем, а не импортировать __main__
.
Небольшое различие между скриптами и модулями заключается в том, что при импорте модуля система будет пытаться использовать существующий файл .pyc (при условии, что он существует и обновлен для этой версии Python), и если он должен компилироваться из файла .py он попытается сохранить файл .pyc. Когда вы запускаете файл .py в качестве сценария, он не пытается загрузить ранее скомпилированный модуль и не пытается сохранить скомпилированный код. По этой причине стоит уменьшить размер скриптов, чтобы минимизировать время запуска.