Курс 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. Получение пути к текущему скрипту с помощью os
  2. Комментарии в Python
  3. Форматирование данных с помощью pprint
  4. Область видимости переменных
  5. Особенности множеств в Python
  6. Работа с deque в Python
  7. Открытие и запись файлов
  8. Сортировка с параметром key
  9. Операции с кортежами
  10. Преобразование чисел в слова
  11. Логические значения в Python
  12. JSON-esque в Python
  13. Отладка производительности Python
  14. Методы __repr__ и __str__ в Python
  15. Методы split() и join() — Python строк.
  16. Блок else в циклах Python
  17. Методы и функции в Python
  18. Основы работы с os
  19. Преобразование многоуровневого словаря
  20. Проверка типа объекта в Python
  21. Изучение объектов с помощью dir()
  22. Создание виртуальной среды
  23. Установка переменной среды в Python
  24. Методы Python для работы с данными
  25. Названия переменных
  26. Функция format() в Python
  27. Карта бомбоубежищ в Москве и Питере
  28. 9 уловок для чистого кода
  29. Функция rsplit() в Python
  30. Проблемы с dict в Python
  31. Декоратор Property в Python
  32. Регистрация на курсы SF Education
  33. Пропуск начальных строк с помощью dropwhile()
  34. Установка random seed в Python
  35. Функциональное программирование.
  36. Создание словаря с значением по умолчанию
  37. Динамическая типизация в Python
  38. Python Тесты и Гайды
  39. Проверка однородности элементов списка
  40. f-строки в формате строк
  41. Управление памятью в Python
  42. Работа со строками в Python.
  43. Удаление файлов и папок в Python
  44. Подсчет элементов с помощью Counter из collections
  45. Изменение списка срезом
  46. Подчеркивание в REPL

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