Курс 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. Форматирование вывода списков
  2. Метод join() для объединения строк
  3. Метод __irshift__ для Python
  4. Оператор del в Python
  5. Официальный канал Python в Telegram
  6. Получение пути к текущему скрипту с помощью os
  7. Работа с collections.Counter
  8. Переворот списка в Python
  9. Проверка подстроки в строке
  10. Сортировка с параметром key
  11. Метод __int__ в Python
  12. ChainMap избыточные ключи
  13. Оператор объединения словарей
  14. Нарезка списков в Python
  15. Работа с файлами в Python
  16. Названия переменных
  17. Проверка вхождения подстроки
  18. Преобразование вложенного списка
  19. Гибкие функции Python
  20. Порядок и длина множеств в Python
  21. Декораторы в Python
  22. Создание объекта времени
  23. Повторение элементов списков
  24. Howdoi — получение ответов из терминала
  25. Установка переменной среды в Python
  26. Выражения-генераторы в Python
  27. Уникальность ключей в словаре
  28. Пропуск начальных строк с помощью dropwhile()
  29. Локальные переменные.
  30. Непрерывная проверка в Python
  31. Метод join() с набором
  32. Слияние словарей в Python 3.9
  33. Преобразование текста в нижний регистр
  34. Метод enumerate() в Python
  35. Асинхронное выполнение задач в процессах
  36. Отправка поздравлений по дню рождения
  37. Поиск индекса элемента в списке
  38. Получение имени функции с помощью inspect
  39. Создание списков в Python
  40. Округление чисел с помощью round
  41. Конвертация изображений в PDF
  42. F-строки в Python
  43. Удаление элемента из списка в Python
  44. Округление в Python
  45. Оператор is в Python

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