Курс 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. Работа с f-строками 2.0
  3. Область видимости переменных
  4. Изменение элемента списка
  5. Принципы SRP и OCP
  6. Работа с кортежами в Python
  7. Избегайте изменяемых аргументов
  8. Оформление текста в консоли с TermColor
  9. Безопасный доступ к значениям словаря
  10. Создание тестовых данных с Faker
  11. Функция enumerate() — Python
  12. Логирование с Logzero
  13. Печать календаря
  14. Метод gt в Python
  15. Введение в Python
  16. Очистка данных в Python
  17. Комментарии в Python.
  18. Игра Виселица на Python
  19. Объявление переменных в Python
  20. Область видимости переменных
  21. Открытие и запись файлов
  22. Удаление элемента по индексу в Python
  23. Переопределение метода
  24. Генерация QR-кодов с Python
  25. Проверка на палиндром
  26. Метод difference_update() — разность множеств
  27. Поиск наиболее частого элемента
  28. Создание Telegram-бота на Python
  29. Ускорение кода с помощью векторизации
  30. Хранение переменных в словаре.
  31. Метод rmatmul для обратного матричного умножения
  32. Удаление файлов и папок в Python
  33. Метод join() для объединения элементов
  34. Bootle — простой веб-фреймворк
  35. Безопасные SQL-запросы в Python 3.11
  36. Создание вкладок с TKinter
  37. Генераторы в Python
  38. Аннотации типов в Python
  39. Профилирование данных с Pandas
  40. Подписка на Kaspersky Team
  41. Многострочные комментарии в Python

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