Конструкция __MAIN__ для чего и кому нужна.
Расскажу для чего мы пишем if __name__=='__main__' и кому это может пригодиться.
Важные моменты:
1) любой код на питоне лежит в модуле (файл с расширением py)
2) любой модуль при запуске программы получает атрибут __name__
3) один(!) модуль, с которого программа началась (точка входа) получает имя __main__, все остальные (которые импортированы) получают имя, равное имени в файловой системе, без расширения. Например first
4) Крайне важное для понимания! Любой модуль при импорте выполняется, как если бы мы его запустили отдельно. То есть все принты будут напечатаны(если они не в функциях), любой вызов функции выполнен.
if __name__=='__main__' означает "если этот модуль НЕ был импортирован, а запущен напрямую, то..." и все действия в данном блоке НЕ будут выполнены при импорте модуля.
Для чего это нужно в том числе новичку:
- группировать все наши действия, имеющие эффект, потом их просто найти и менять
- отладка, тесты, ассерты, при импорте они не выполнятся
- специфичные настройки для запуска
Подчеркну, что блок мейн вовсе не обязателен, это просто возможность что-то выполнять в модуле скажем для отладки так, чтобы не получить ненужные эффекты при импорте, если мы забыли отладочные вещи убрать.
Видео Конструкция __MAIN__ для чего и кому нужна. канала Python Russian
Важные моменты:
1) любой код на питоне лежит в модуле (файл с расширением py)
2) любой модуль при запуске программы получает атрибут __name__
3) один(!) модуль, с которого программа началась (точка входа) получает имя __main__, все остальные (которые импортированы) получают имя, равное имени в файловой системе, без расширения. Например first
4) Крайне важное для понимания! Любой модуль при импорте выполняется, как если бы мы его запустили отдельно. То есть все принты будут напечатаны(если они не в функциях), любой вызов функции выполнен.
if __name__=='__main__' означает "если этот модуль НЕ был импортирован, а запущен напрямую, то..." и все действия в данном блоке НЕ будут выполнены при импорте модуля.
Для чего это нужно в том числе новичку:
- группировать все наши действия, имеющие эффект, потом их просто найти и менять
- отладка, тесты, ассерты, при импорте они не выполнятся
- специфичные настройки для запуска
Подчеркну, что блок мейн вовсе не обязателен, это просто возможность что-то выполнять в модуле скажем для отладки так, чтобы не получить ненужные эффекты при импорте, если мы забыли отладочные вещи убрать.
Видео Конструкция __MAIN__ для чего и кому нужна. канала Python Russian
Показать
Комментарии отсутствуют
Информация о видео
Другие видео канала
«Наука голодания» — лучший док. фильм о лечебном голодании в СССР, России, Европе и США2020 Практика программирования на Python, лекция №1Частые ошибки начинающих питонистовПростая функция-генератор. Для чего нужен yieldРабота с Git в PyCharm. Без терминалов и головной боли. Смотреть до конца, жесть.Учим Python за 1 час! #От ПрофессионалаИмпорт собственных модулей в Python. Import modules. Атрибут модуля __name__ и __main__Всегда проверяй свой код. Простое тестирование с assertОсновное оружие питониста: Listcomps и GenexpПервый декоратор, разбираемся с написаниемPython Tutorial: if __name__ == '__main__'Как изучать программирование (PYTHON, но не только)Особенности и возможности PyCharmПростая работа с импортами для новичков. Что такое относительный и абсолютный импорт.Что такое регулярные выражения (регулярки, regexp)Все еще не используете аннотации типов? Тогда мы идем к вам!Ф-строки рулят. F-Strings, форматированиеНемного о встроенных функциях в PythonЛямбды. Не такие и страшныеКонсоль Python и с чем ее едят