Курс 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. Модуль subprocess: запуск внешних команд
  2. Копирование и вставка текста в Python
  3. Скрытие вывода данных
  4. Структура данных deque в Python
  5. Использование обратной косой черты в f-строках
  6. Присоединение элементов коллекции
  7. Работа с датами в Python
  8. Основные методы NumPy
  9. Оптимизация памяти с помощью __slots__
  10. Создание словарей в Python
  11. Метод join() для объединения элементов
  12. Генераторы в Python
  13. Сумма элементов списка
  14. Список и кортеж в Python
  15. Удаление файлов и папок в Python
  16. Объединение объектов в Python
  17. Преобразование текста в речь с Python
  18. Срезы в Numpy
  19. Избегайте использования goto
  20. Официальный канал Python в Telegram
  21. Операции со строками в Python
  22. Декоратор Property в Python
  23. Удаление ресурса в Python
  24. Форматирование строк в Python
  25. Проекты на Python
  26. Область видимости переменных
  27. Работа с модулем bisect
  28. Подсказки при вводе данных в Python
  29. CSV строка разделение в Python
  30. Исправление ошибки NameError
  31. Howdoi — получение ответов из терминала
  32. Разработка игры Pong с turtle
  33. Python Тесты и Гайды
  34. Объединение множеств в Python
  35. Извлечение статей с newspaper3k
  36. Путь к интерпретатору Python
  37. Работа с модулем cmath
  38. Установка и обучение ChatterBot
  39. Замена текста с re.sub()
  40. Методы в Python
  41. EMOT преобразование эмодзи в текст
  42. Метаклассы в Python
  43. Метод __float__ в Python
  44. Преобразование многоуровневого словаря

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