Курс 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. Функция product() из itertools
  3. Отладка утечек памяти в Python
  4. Декоратор total_ordering для класса Point
  5. Установка и использование pyshorteners
  6. Многопоточность в Python
  7. Замена символов в строке
  8. Генерация тестовых данных с factory_boy
  9. Декораторы в Python
  10. JSON-esque в Python
  11. Генерация ключей RSA
  12. Работа с комбинациями в Python.
  13. Работа с контекст-менеджером «with»
  14. Конкатенация строковых литералов
  15. Считывание бинарного файла в Python
  16. Конкатенация строк в Python
  17. Пропуск строк в файле с itertools
  18. Работа с географическими данными в Python
  19. Генераторы данных
  20. Метод __iand__ для пользовательских классов
  21. Объединение словарей в Python
  22. Python: отсутствие точек с запятыми
  23. Основы работы с os
  24. Подсчет количества элементов в списке
  25. Работа с YAML в Python
  26. Преобразование Word в PDF с Spire.Doc
  27. Типы возвращаемых значений в Python
  28. Документирование функций в Python
  29. Форматирование строк с % в Python
  30. Работа с байтовыми строками в Python
  31. Моржовый оператор в Python 3.8
  32. Возврат нескольких значений
  33. Декораторы в Python
  34. Генерация строк с .join()
  35. Работа с базами данных SQLite
  36. Отладка регулярных выражений в Python
  37. Создание .exe файла с pyinstaller
  38. Синхронизация доступа к ресурсам
  39. Список переменных с %who
  40. Нахождение пересечения множеств
  41. JSON в Python: модуль, dump, dumps, load
  42. Конкатенация строк с join() в Python
  43. Транспонирование 2D-массива с помощью zip

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