Курс 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. Подсчет элементов в Python
  3. Функция count() в Python
  4. PrettyTable: создание таблицы
  5. Класс-оболочка для словарей
  6. Создание виртуальной среды
  7. Создание новых списков в Python
  8. Кортежи в Python: особенности и преимущества
  9. Работа с библиотекой requests
  10. Рациональные числа в Python
  11. Запуск файлового сервера
  12. Циклы в Python
  13. Импорт модулей и пакетов в Python
  14. Работа с словарями в Python
  15. Преобразование списка в словарь через генератор
  16. Работа с zip-архивами в Python
  17. Логирование с Logzero
  18. Взаимодействие с sys
  19. Работа с каталогами в Python
  20. Удаление файлов в Python
  21. Удаление ссылок в Python
  22. Проверка элемента в множестве.
  23. Проверка кортежей.
  24. Модуль inspect: получение информации о объектах
  25. Различия символов в Python
  26. Печать в одной строке
  27. Иерархия классов в Python
  28. Нахождение разницы между списками в Python
  29. Python 3.12: Псевдонимы типов
  30. Группы исключений в Python
  31. Работа с массивами в Numpy
  32. Протокол управления контекстом
  33. Подсчет элементов с помощью Counter из collections
  34. Форматирование строк с помощью f-строк
  35. Печать месячного календаря
  36. Обработка элементов в Python
  37. Работа с CSV файлами
  38. Работа с YAML в Python
  39. Python Метод Union Множеств
  40. Форматирование данных с помощью pprint
  41. Загрузка постов Instagram
  42. Автоматизация с Python

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