Курс 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. Метод clear для коллекций
  2. Срезы в Python
  3. Объединение строк с помощью метода join
  4. Работа с аргументами командной строки в Python
  5. Манипуляция формой массива в Numpy
  6. Обработка исключения UnboundLocalError
  7. Python Поверхностное Копирование
  8. Выбор редактора кода.
  9. Проблемы с именами переменных
  10. Объединение списков с помощью zip
  11. Измерение времени выполнения кода с помощью time
  12. Итераторы с потерямиZIP
  13. Преобразование строк в числа в Python
  14. Метод join() для объединения элементов в строку.
  15. Игра «Угадывание чисел»
  16. Визуализация пропусков данных
  17. Получение ID процесса
  18. Работа с NumPy.linalg
  19. Избегайте изменяемых аргументов
  20. Python reversed() vs срез[::-1]
  21. Работа с пользовательским вводом
  22. Проверка переменных окружения в Python
  23. Функция zip() — объединение последовательностей
  24. Округление в Python
  25. Операторы присваивания в Python
  26. Нан-рефлексивность в Python
  27. Форматирование строк в Python.
  28. Метод join для объединения строк
  29. Подписка на Kaspersky Team
  30. Оформление текста в консоли с TermColor
  31. Логирование с Logzero
  32. Преобразование документов в PDF с помощью Spire.Office
  33. Разделение строк в Python
  34. Бинарный поиск
  35. Отправка поздравлений по дню рождения
  36. Установка Python3.7 и PIP
  37. Форматирование строк в Python
  38. Копирование файлов с shutil()
  39. Переопределение метода xor в Python
  40. Форматирование данных с помощью pprint
  41. Измерение времени выполнения кода
  42. Именованные срезы в Python
  43. globals и locals
  44. Работа с изменяемыми списками
  45. Область видимости переменных
  46. Работа с индексами списков
  47. Секреты Python

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