Курс 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. Работа с набором данных CIFAR10 в PyTorch
  2. Принципы программирования
  3. Проверка наличия элемента в списке
  4. Оптимизация памяти с __slots__
  5. Частичное совпадение пользовательского ввода в Python 3.10
  6. Визуализация пропусков данных
  7. Отладка регулярных выражений в Python
  8. Подсчет часто встречающихся элементов
  9. Проверка файла .py на синтаксис.
  10. Аннотации типов в Python
  11. Функция product() в Python
  12. Философия Python
  13. Переворот списка в Python
  14. Сравнение строк в Python
  15. Библиотека Emoji: использование смайлов в Python
  16. Сортировка элементов в Python
  17. Работа с геоданными с помощью geopy
  18. Форматирование строк в Python
  19. Создание namedtuple списком полей
  20. Применение промокода в Много лосося
  21. Проверка ввода с помощью isdigit
  22. Проблема сравнения словарей
  23. Оператор continue в Python
  24. Расчет времени выполнения
  25. Расчет времени выполнения кода
  26. Функция count() в Python
  27. Область видимости переменных в Python
  28. Импорт модулей в Python 3.12
  29. Взаимодействие с sys
  30. Преобразование кортежа в словарь.
  31. Dict Comprehension в Python
  32. Команда %dhist — список посещенных каталогов
  33. Подсказки типов в Python
  34. Создание новых списков через list comprehensions
  35. Тестирование с unittest
  36. Удаление пробелов методом translate()
  37. Работа с изменяемыми коллекциями
  38. Работа со строками
  39. Импорт модулей в Python 3.12
  40. Методы и функции в Python
  41. Безопасные SQL-запросы в Python 3.11
  42. Парсинг веб-страниц с Beautiful Soup
  43. Генератор надежных паролей
  44. Поиск с библиотекой Google
  45. Работа с кортежами в Python
  46. Блок else в циклах.
  47. Декораторы в Python
  48. Создание новых списков в Python

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