Как я могу предотвратить запуск встроенного кода при импорте моего модуля?
Я сделал программу под названием barcode.py
который имел 4 функции и основной код.
Когда я импортирую это в другую программу, используя
import barcode
он запускает штрих-код программы и запрашивает ввод, как в основной программе. Я был удивлен, что это происходит, даже когда я еще не вызвал функцию и только импортировал barcode
Может кто-нибудь объяснить, почему это происходит и как я могу импортировать свой код без запуска основного кода в файле barcode.py
?
1 ответ
Во-первых, ваша проблема не в IDLE
конкретный.
Документация Python по импорту модулей говорит вам, что:
Модуль может содержать исполняемые операторы, а также определения функций. Эти операторы предназначены для инициализации модуля. Они выполняются только в первый раз, когда имя модуля встречается в операторе импорта. (Они также запускаются, если файл выполняется как скрипт.)
Что это означает, что когда вы import
модуль, он будет запущен один раз, как если бы вы вызвали его непосредственно как скрипт (например, набрав barcode.py
в командной строке в вашем примере).
Если вам нужен скрипт в модульном файле, который выполняется, если вы вызываете его автономно (например, barcode.py
) но не когда это import
ed, используйте следующий шаблон из документации модуля Python:
if __name__ == "__main__":
print("I've been run as a script")
Пример для проверки этой функциональности
Вы можете проверить в командной строке, что это работает - если вы сохраните скрипт выше, как, например, modulefile.py
и беги
$ python modulefile.py
ты увидишь
I've been run as a script
Если вы начнете python
и введите
>>> import modulefile
Вы не получите никакого выхода.