> **Источник:** https://python-all.ru/3.4/library/__main__.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 29.4. [`__main__`](https://python-all.ru/3.4/library/__main__.html#module-__main__) – Окружение скрипта верхнего уровня

Именем `'__main__'` обозначается область видимости, в которой выполняется код верхнего уровня. Значение `'__main__'` присваивается атрибуту \_\_name\_\_ модуля, когда он считывается со стандартного ввода, из скрипта или интерактивной строки.

Модуль может определить, выполняется ли он в основной области видимости, проверив свой атрибут `__name__`. Это позволяет реализовать распространённую идиому условного выполнения кода в модуле, когда он запускается как скрипт или с помощью `python -m`, но не при его импорте:

```python
if __name__ == "__main__":
    # выполнять только при запуске как скрипт
    main()
```

Для пакета того же эффекта можно добиться, включив модуль `__main__.py`, содержимое которого будет выполнено, когда пакет запускается с помощью `-m`.
