Курс 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. Проверка типов с помощью isinstance
  4. Принципы Zen Python
  5. Декораторы в Python
  6. Работа с модулем bisect
  7. Удаление элемента из списка в Python
  8. Группировка элементов в словарь
  9. Управление контекстом выполнения
  10. Настройка нарезки списков
  11. Python Метод sleep() из time
  12. Оптимизация памяти с __slots__
  13. Тестирование функции сложения
  14. Атрибуты класса и экземпляра
  15. Запрос пароля с помощью getpass
  16. Итераторы в Python
  17. Отступы в Python
  18. EMOT преобразование эмодзи в текст
  19. Преобразование кортежа в словарь.
  20. Установка random seed в Python
  21. Метод pop() списка
  22. Генераторы данных
  23. Глобальные переменные в Python
  24. Работа с множествами в Python
  25. Метод __iand__ для пользовательских классов
  26. Оценка выражений генератора в Python
  27. Оператор @ для умножения матриц
  28. Непрерывная проверка в Python
  29. Сортировка данных с лямбда-функциями
  30. Функция enumerate() в Python
  31. Измерение времени выполнения кода
  32. Основы Python за 14 дней
  33. Удаление ссылок в Python
  34. Печать календаря
  35. Структуры данных в Python
  36. Назначение максимального и минимального значения переменной в Python.
  37. Оператор del в Python
  38. Функция enumerate() в Python
  39. Преобразование Word в PDF с Spire.Doc
  40. Фильтрация списка от «ложных» значений
  41. История Python
  42. Объединение Python и Shell
  43. Оболочка Python
  44. Подписка на @SelectelNews
  45. Работа с географическими данными.
  46. Руководство по Pymorphy2
  47. Проблема с изменяемыми аргументами
  48. Управление виртуальными средами в Python
  49. Наиболее частотные элементы с помощью Counter

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