Каково различие между модулем и сценарием в Python?

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

27
задан Shailesh Tainwala 8 June 2010 в 09:27
поделиться

2 ответа

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

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

45
ответ дан 28 November 2019 в 04:42
поделиться

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

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

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

19
ответ дан 28 November 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: