В чем разница между модулем и скриптом в Python? - PullRequest
26 голосов
/ 08 июня 2010

Думаю, что заголовок обобщает вопрос: -)

Ответы [ 2 ]

44 голосов
/ 08 июня 2010

Скрипт - это, как правило, исполняемый фрагмент кода, запускаемый сам по себе. Модуль - это, как правило, библиотека, импортированная другими частями кода.

Обратите внимание, что нет внутренних различий - оба являются исполняемыми и импортируемыми, хотя библиотечный код часто ничего не делает (или просто запускает свои модульные тесты) при непосредственном выполнении и импорте кода, предназначенного для скрипт вызовет его выполнение, следовательно, общий if __name__ == "__main__" тест.

19 голосов
/ 08 июня 2010

Любой модуль Python может быть выполнен как скрипт. Единственное существенное отличие состоит в том, что при импорте в качестве модуля имя файла используется в качестве основы для имени модуля, тогда как при выполнении его в качестве сценария модуль называется __main__.

Это различие позволяет вести себя по-разному при импорте, заключая код, специфичный для скрипта, в блок, защищенный if __name__=="__main__". Известно, что это вызывает путаницу, когда пользователь пытается импортировать основной модуль под своим именем, а не импортировать __main__.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...