Курс 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. Модуль pprint: улучшение вывода данных
  2. Форматирование строк в Python
  3. Установка и использование библиотеки google
  4. Символ подчеркивания в Python
  5. Вывод переменной и строки в Python
  6. Создание обратного итератора
  7. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  8. Списки: объединение, изменение
  9. Обновление данных через PUT запрос
  10. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  11. Функция enumerate в Python
  12. Блок try…finally в Python
  13. Оператор in в Python
  14. Изучение объектов с помощью dir()
  15. Константы в модуле cmath
  16. Декодирование строк в Python
  17. Создание словарей в Python
  18. Инверсия списка и строки
  19. Работа с срезами в Python
  20. Работа с SQLite в Python
  21. Нахождение хеша для бесконечности и NaN в Python
  22. Функция rsplit() в Python
  23. Создание коллекций из выражения-генератора
  24. Преобразование чисел в Python
  25. Измерение потребления памяти при сортировке
  26. Перехват исключений в Python
  27. Модуль math: основные функции
  28. Создание новых функций через partial
  29. Получение комбинаций в Python
  30. Декораторы с аргументами
  31. Генерация случайных чисел в Python
  32. Декораторы в Python
  33. Ветвление выражения в Python
  34. Работа с датой и временем в Python
  35. Контроль точности вывода чисел
  36. Мониторинг памяти с Pympler
  37. Подсчет элементов в списке с Counter
  38. Создание новых списков в Python
  39. Копирование словарей и списков в Python
  40. Документирование функций в Python
  41. Solidity для DeFi Ethereum
  42. Генератор списка с условием if
  43. Добавление элемента в список.
  44. Оператор is в Python
  45. Работа с утверждениями в Python
  46. Список методов и атрибутов

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