Курс 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. Разделение строки с помощью re.split()
  2. Сравнение строк в Python
  3. Добавление вложенных списков
  4. Метод count() для списков
  5. Метод ifloordiv для пользовательских классов
  6. Вычисление времени выполнения
  7. Работа с CSV файлами в Python
  8. Документация функции help() в Python
  9. Применение промокода в Много лосося
  10. Перемещение и удаление файлов в Python
  11. Работа с коллекциями Python
  12. Python itertools combinations() — группировка элементов
  13. Counter() — подсчет элементов
  14. Визуализация пропусков данных
  15. Итераторы в Python
  16. Введение в Python
  17. Работа с NumPy
  18. Работа с базами данных SQLite
  19. Метод rsub для пользовательских чисел
  20. Логирование с Loguru
  21. Лямбда-функции для min/max
  22. Моржовый оператор в Python 3.8
  23. Явный импорт переменных
  24. Конвертация коллекций в Python.
  25. Преобразование символов в нижний регистр
  26. Работа с OpenCV
  27. Метод Enumerate() для списков
  28. Создание функций высшего порядка
  29. Создание и обучение модели с Keras
  30. Статическая типизация в Python
  31. Метод repr() в Python
  32. Оптимизация памяти с помощью __slots__
  33. Удаление символов новой строки в Python.
  34. Работа с NumPy.linalg
  35. Функции в одну строку
  36. Ускорение обработки данных с %autoawait
  37. Синхронизация доступа к ресурсам
  38. Функция print() — вывод информации
  39. Измерение времени выполнения кода
  40. Python: возвращение нескольких значений
  41. Получение ID текущего процесса
  42. Метод __iand__ для пользовательских классов
  43. Транспонирование 2D-массива с помощью zip

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