Курс 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. Применение функции к каждому элементу списка
  3. Определение функций с необязательными аргументами
  4. Работа с URL-адресами в Python
  5. Многопоточность в Python
  6. Управление виртуальными окружениями в Python
  7. Обучение модели с указанием эпох
  8. Подсчет элементов в Python
  9. Умножение строк и списков
  10. Склеивание строк без циклов
  11. Объединение словарей в Python
  12. Шаблоны и наследование в Flask
  13. Копирование словарей и списков в Python
  14. Получение списка кортежей из словаря
  15. Сортировка списка по индексам
  16. Логические значения в Python
  17. Сериализация данных в JSON с помощью json.dumps
  18. JMESPath в Python
  19. Аннотации типов в Python
  20. Декораторы в Python
  21. Магические методы в Python
  22. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  23. Удаление символа из строки
  24. Декораторы в Python
  25. Создание GUI на Tkinter
  26. Основные методы NumPy
  27. Замер времени выполнения кода
  28. Метод init в Python
  29. Проверка запуска скрипта или импорта модуля
  30. Регулярные выражения: метод match
  31. Проверка однородности элементов списка
  32. Оператор space-invader
  33. Работа с CSV файлами
  34. Выборка чисел
  35. Изменяемые и неизменяемые объекты
  36. Структурирование данных с Pydantic
  37. Метод __ixor__ для побитового исключающего ИЛИ
  38. Искажение имен в Python
  39. Основы слова
  40. Итерация по копии коллекции
  41. Переменные в Python
  42. Вывод с переменной через запятую
  43. Основы работы с os
  44. Переопределение метода sub
  45. Сортировка в Python
  46. Обработка ошибок в Python
  47. Объявление переменных в Python

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