Курс 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. Функция divmod() в Python
  3. Ускорение обработки данных с %autoawait
  4. Функции высшего порядка в Python
  5. Структурирование именованных констант
  6. Работа с утверждениями в Python
  7. Возврат значений из генератора
  8. Разделение строки в Python
  9. Генераторы списков в Python
  10. Использование обратной косой черты в f-строках
  11. Импорт модулей в Python 3.12
  12. Python 3.12: переиспользование кавычек
  13. Конкатенация списков в Python
  14. Транспонирование 2D-массива с помощью zip
  15. Итераторы в Python
  16. Поиск уникальных и повторяющихся элементов
  17. Встраивание HTML в Jupyter Notebook
  18. Декораторы в Python
  19. Настройка вывода NumPy
  20. Библиотека sh: использование команд bash в Python
  21. Вычисление логарифмов в Python
  22. Метод join() для объединения строк
  23. Обработка исключения UnboundLocalError
  24. Объединение, распаковка и деструктуризация
  25. Библиотека wikipedia для Python
  26. Объединение списков в Python
  27. Декораторы в Python
  28. Управление User-Agent в Python
  29. Проверка надежности пароля на Python
  30. Улучшенные подсказки для импорта в Python 3.12
  31. Установка максимального количества цифр
  32. Работа с базами данных SQLite
  33. Фильтрация списков с itertools
  34. Основы работы со списками
  35. Удаление первого элемента списка
  36. CSV строка разделение в Python
  37. Принципы программирования
  38. Генератор списка с условием if
  39. Python Менеджер контекста
  40. Оператор in для проверки наличия элемента
  41. Метод __getitem__ в Python
  42. Исключение NotImplementedError
  43. Enum в Python

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