Курс 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. Преобразование Excel в PDF с Spire.XLS
  3. Основные операции с библиотекой Numpy
  4. Создание namedtuple списком полей
  5. Работа с набором данных CIFAR10 в PyTorch
  6. Векторизация в Python с NumPy.
  7. Метод ior для битовых операций
  8. Ускорение кода с помощью векторизации
  9. Добавление вложенных списков
  10. Получение размера объекта с sys.getsizeof()
  11. Группы исключений в Python
  12. Генератор чисел Фибоначчи
  13. Округление банкира в Python
  14. Оценка точности модели
  15. Генераторы в Python
  16. Ограничение ресурсов в Python
  17. Генерация QR-кодов с библиотекой qrcode
  18. Работа с контекстными переменными
  19. Цикл for в Python
  20. Concrete Paths в Python
  21. Переименование файлов в Python
  22. Просмотр файла в Jupyter Noteboo
  23. Получение списка файлов в директории с использованием os
  24. Работа с комплексными числами
  25. Объединение объектов в Python
  26. Блок else в циклах.
  27. Управление памятью в Python
  28. Асинхронный код в Python
  29. Операции с массивами в NumPy
  30. Возврат нескольких значений из функции
  31. Метод сравнения объектов в Python
  32. Методы shutil для работы с файлами
  33. Представление бесконечности в Python
  34. Базовые объекты Python
  35. Библиотека sh: использование команд bash в Python
  36. Создание коллекций из выражения-генератора
  37. Поиск наиболее частого элемента в списке
  38. Отправка HTTP-запросов с User-Agent
  39. Работа с буфером обмена на Python
  40. Функция divmod() в Python
  41. Итерации в Python
  42. Метод enumerate() в Python
  43. Работа со стеком в Python
  44. Enum в Python
  45. Работа с Event() в threading
  46. Показ всплывающих окон Tkinter
  47. Работа со словарями в Python

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