Курс 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. Хеширование паролей с использованием salt
  2. Новшества Flask 2.0
  3. Подписка на Kaspersky Team
  4. Работа с collections в Python
  5. Поиск индекса элемента
  6. Итераторы в Python
  7. Оптимизация параметров в Python
  8. Проверка подстроки в строке
  9. Структуры данных в Python
  10. Тестирование функции сложения
  11. Распаковка аргументов в Python
  12. Создание списков в Python
  13. Множественные конструкторы в Python
  14. Отладка производительности Python
  15. Переопределение оператора % для объектов
  16. Поиск с библиотекой Google
  17. Однострочники Python
  18. Резервирование символов в Python
  19. Функции range() в Python
  20. Экспорт внешнего файла с помощью writefile
  21. Настройка логгера Logzero
  22. Создание .exe файла с pyinstaller
  23. Философия Python
  24. Вычисление натурального логарифма в NumPy
  25. Pretty-printing JSON в Python
  26. Разделение строки с помощью re.split()
  27. Роль запятой в Python
  28. Установка Python — Простое руководство
  29. Метод count() для списка
  30. Проверка списка: any() и all()
  31. Повторение и перенос строки
  32. Переопределение метода len
  33. Декораторы с аргументами в Python
  34. Метод splitlines() для разделения строк
  35. Создание и инициализация объектов
  36. Переменная с нижним подчеркиванием
  37. Namedtuple в Python
  38. Тестирование времени с Freezegun
  39. Введение в Python
  40. Метод __iand__ для пользовательских классов
  41. Работа с классами данных
  42. GitHub в Telegram: подписка на уведомления
  43. None в Python: использование и особенности
  44. Оператор zip в Python
  45. Парсинг статей с Newspaper3k

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