Курс Python → Проверка запуска скрипта или импорта модуля

В процессе разработки на Python очень часто возникает необходимость различать, запущен ли скрипт напрямую или импортирован как модуль в другой файл. Это особенно актуально при создании библиотек и модулей, где вы хотите предоставить пользователю доступ к функциям и классам, но при этом избежать выполнения определенного кода при импорте. Python предоставляет удобный способ проверки этого с помощью специальной переменной __name__.

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

Рассмотрим простой пример, чтобы проиллюстрировать это. Предположим, у нас есть файл example.py, который содержит функцию, выводящую приветственное сообщение, и код, который должен выполняться только при прямом запуске:

def greet():
    print("Привет, мир!")

if __name__ == "__main__":
    greet()
    print("Этот код выполняется только при прямом запуске.")

Если вы запустите файл example.py напрямую, вы увидите следующий вывод:

Привет, мир!
Этот код выполняется только при прямом запуске.

Однако, если вы импортируете его в другой файл, например, в main.py, и вызовете функцию greet(), код под условием if __name__ == "__main__": не выполнится:

# main.py
import example

example.greet()

При запуске main.py вы получите следующий вывод:

Привет, мир!

Таким образом, использование переменной __name__ позволяет вам изолировать код, который не должен выполняться при импорте, обеспечивая большую модульность и чистоту вашего кода. Это является хорошей практикой в Python-разработке и помогает избежать неожиданных побочных эффектов при использовании ваших модулей в других проектах.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Функции min(), max(), sum()
  2. Получение ID процесса
  3. Переопределение метода divmod
  4. Магические методы в Python
  5. Генераторы списков в Python
  6. Метод join() для объединения элементов
  7. Метод title() в Python
  8. Запрос пароля с помощью getpass
  9. Добавление вложенных списков
  10. Контроль точности вывода чисел
  11. Python itertools combinations() — группировка элементов
  12. Преобразование Word в PDF с Spire.Doc
  13. Разбиение строки в Python
  14. ChainMap избыточные ключи
  15. Переопределение метода
  16. Модуль Operator в Python
  17. Регистрация на TenChat
  18. Блок else в циклах Python
  19. Сортировка и обратный порядок
  20. Принципы Zen of Python
  21. Проверка строки на палиндром
  22. Метод clear для коллекций
  23. Возвращение нескольких значений
  24. Поиск индексов в списке
  25. Python Тесты и Гайды
  26. Логирование с Logzero
  27. Удаление ключей из словаря
  28. Повторение и перенос строки
  29. Удаление первого элемента списка
  30. Назначение максимального и минимального значения переменной в Python.
  31. Итерация по итерируемым объектам
  32. Структура данных deque в Python
  33. Кортеж в Python: создание и использование
  34. Работа с YAML в Python
  35. Оператор «is not» в Python
  36. Импорт модулей и пакетов в Python
  37. Деление в Python
  38. Обмен переменными в Jupyter
  39. Обезопасьте ввод данных
  40. Метод index() в Python
  41. Сортировка HTML-элементов
  42. Анонимные функции в Python
  43. Игра «Угадывание чисел»
  44. Структуры данных в Python
  45. Принципы программирования
  46. Создание списков в Python

Marketello читают маркетологи из крутых компаний