Курс 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. Копирование и вставка текста в Python
  2. Подсказки типов в Python
  3. Форматирование объектов с модулем pprint
  4. Атрибуты класса и экземпляра в Python
  5. Модуль sys: основы
  6. Списковое включение в Python
  7. Поиск индекса элемента в списке
  8. Перевод двоичного кода в целое число
  9. Функция zip() — объединение последовательностей
  10. Отношения подклассов в Python
  11. Генераторы в Python
  12. Логирование в Python
  13. ChainMap избыточные ключи
  14. Избегайте пустого списка
  15. Метод matmul для умножения матриц
  16. Генерация ключей RSA
  17. Перемещение и удаление файлов в Python
  18. Оптимизация поиска в словарях
  19. Переопределение метода xor в Python
  20. Преобразование типов данных в set comprehension
  21. Нарезка списков в Python
  22. Получение размера объекта с sys.getsizeof()
  23. Логирование с Logzero
  24. Объединение словарей в Python
  25. Генерация случайных чисел в Python
  26. Функция eval() в Python
  27. Основные методы NumPy
  28. Работа с timedelta
  29. Работа с контекстным менеджером Pool
  30. Преобразование кортежа в словарь.
  31. Печать в одной строке
  32. Лямбда-функции в Python
  33. Срезы в Python
  34. Генератор списка в Python
  35. Конвертация коллекций в Python.
  36. Установка и использование Virtualenv
  37. Модуль math: основные функции
  38. Работа с zip()
  39. Стать Python-разработчиком
  40. Установка переменной среды в Python
  41. Обучение модели с указанием эпох
  42. Именование столбцов в Python с pandas
  43. Работа с NumPy
  44. Метод join() для объединения элементов в строку.
  45. Создание и обучение модели с Keras
  46. Отображение графиков в Jupyter с Matplotlib
  47. Обработка аргументов Python
  48. Python UserString — создание подклассов строк

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