Курс 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. Метод eq для сравнения объектов
  2. Добавление элементов в список
  3. Участие в LP стейкинге Waves
  4. Работа с модулем glob в Python
  5. Нарезка списков в Python
  6. Замер времени выполнения кода
  7. Разделение списка на гнппы
  8. Сериализация данных в JSON с помощью json.dumps
  9. Аргументы *args и **kwargs
  10. Декораторы с @wraps
  11. Управление памятью в numpy.
  12. Построение графиков в терминале с bashplotlib
  13. Перетасовка списков в Python
  14. Создание новых списков в Python
  15. Создание списка дат
  16. Метод Enumerate() для списков
  17. Структуры данных в Python
  18. Установка и использование модуля Wikipedia
  19. Применение функции map() с лямбда-функциями
  20. Списковое включение в Python
  21. Регистрация на TenChat
  22. Создание итерируемых объектов
  23. Метод count в Python: почему count(», ») возвращает 4?
  24. Обход элементов в Python
  25. Работа с набором данных CIFAR10 в PyTorch
  26. Установка User-Agent в Python
  27. Работа с геоданными с помощью geopy
  28. Поиск повторов в списке
  29. Оптимизация памяти с помощью __slots__
  30. Возвращение нескольких значений через кортеж или класс
  31. Оператор += в Python
  32. Метод __irshift__ для Python
  33. Автоматизация действий с Pyautogui
  34. Работа с PosixPath() в Python
  35. Оптимизация создания строк
  36. Установка и обучение ChatterBot
  37. Таймер обратного отсчета
  38. Красивый вывод списка
  39. Форматирование строк с % в Python
  40. Конвертация изображений в PDF
  41. Определение объема памяти объекта
  42. Проверка версии Python
  43. Создание лямбда-функций
  44. Печать календаря в Python
  45. Модуль subprocess: запуск внешних команд
  46. Модуль itertools: эффективная работа с итераторами

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