Курс 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. Логирование с Logzero
  4. Установка Git и AWS CLI
  5. Функция с *args.
  6. Оператор match в Python
  7. Списки: объединение, изменение
  8. Создание класса в Python
  9. Методы __repr__ и __str__ в Python
  10. Навыки Python: строки, типы данных
  11. Оптимизация памяти с помощью __slots__
  12. Распаковка элементов последовательности
  13. Переопределение метода xor в Python
  14. Работа со словарями
  15. Шаблоны и наследование в Flask
  16. Улучшение читаемости кода в Python
  17. Отправка POST-запроса в REST API
  18. Взаимодействие с sys
  19. Метод __float__ в Python
  20. Использование defaultdict в Python
  21. Python Calendar Usage
  22. Именованные кортежи в Python
  23. Оптимизация гиперпараметров с Scikit Optimize
  24. JSON в Python: модуль, dump, dumps, load
  25. Копирование и вставка текста в Python
  26. Оптимизация гиперпараметров в Python
  27. Работа с утверждениями в Python
  28. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  29. Лямбда-функции в Python
  30. Работа со словарями с defaultdict из collections
  31. Поиск наиболее частого элемента списке
  32. Метод get() в Python
  33. Удаление дубликатов из списка
  34. Основы Python
  35. Разделение строки на подстроки в Python
  36. Имена объектов в Python
  37. Поиск индекса элемента в списке
  38. Удаление первого элемента списка
  39. Визуализация пропусков данных
  40. Проверка элементов списка условием
  41. Операции со строками в Python
  42. Умножение строк и списков
  43. Особенности ключей словаря в Python

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