Курс 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. Вывод букв строки в Python
  3. Запуск асинхронной корутины
  4. Изменение IP-адреса в Python
  5. Создание списка через цикл
  6. Преобразование списка в словарь через генератор
  7. Отношения подклассов в Python
  8. Метод rxor для операции побитового исключающего «или»
  9. Python: отсутствие точек с запятыми
  10. Основы работы со списками
  11. Удаление элементов из списка в Python
  12. Списки в Python: основы
  13. Python Тесты и Гайды
  14. Декоратор Ajax required
  15. Разбиение строки в Python
  16. Управление ресурсами с контекстными менеджерами
  17. Метод split() в Python
  18. Анализ текста на русском языке с помощью Pymystem3
  19. Закрытие файла в Python
  20. Оператор «not» в Python
  21. Инициализация структур данных
  22. Копирование и вставка текста в Python
  23. Обмен данными с asyncio.Queue
  24. ROT13 Шифр Цезаря в Python
  25. Операторы присваивания в Python
  26. Создание Telegram-бота на Python
  27. Отслеживание прогресса с tqdm
  28. Разбиение текста в Python
  29. Назначение максимального и минимального значения переменной в Python.
  30. Отделение звука от видео
  31. Разделение строки с помощью re.split()
  32. Изучение объектов с помощью dir()
  33. Solidity для DeFi Ethereum
  34. Python: библиотеки и функции
  35. Передача аргументов через **arguments
  36. Доступ к локальным переменным
  37. Асинхронный код в Python
  38. Сравнение объектов в Python
  39. Названия столбцов в Python таблицах
  40. Упрощенный вывод данных в Python
  41. Подсчет частотности элементов в Python
  42. Сортировка HTML по CSS-селектору
  43. Генераторы в Python
  44. Создание пустых функций и классов в Python
  45. Встроенные функции Python
  46. Сравнение строк в Python

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