background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Конструкция __MAIN__ для чего и кому нужна."

input logo icon
Теги видео
|

Теги видео

python
import
__main__
питон
пайтон
PythonRussian
PyCharm
Конструкция __MAIN__
Конструкция __MAIN__ для чего и кому нужна
__main__ in python
python __main__
what is __main__ python
программирование на python
python практика
язык программирования python
уроки программирования
программирование
programming
python для начинающих с нуля
python с нуля
питон с нуля
программирование с нуля
как стать программистом
python для начинающих
python уроки
как выучить питон
pythonrussian
pycharm
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
всем привет друзья попросили записать
00:00:03
видео по поводу блока мейн python для
00:00:08
чего нужен и нужен ли
00:00:11
и кому нужен ли он новичку постараюсь
00:00:14
сегодня об этом немножко поговорить и
00:00:17
показать опять же на пальцах и не
00:00:20
выражая только свое мнение подробно
00:00:22
можно про это почитать ну марка лучше
00:00:25
книги изучаем python у него там
00:00:27
достаточно подробно все расписано
00:00:29
ну и в сети вообще много объяснений того
00:00:31
как блок main работает правда в
00:00:34
некоторых или селениях упускают один
00:00:37
очень важный момент на котором я
00:00:39
специально остановлюсь и привлеку ваше
00:00:43
внимание потому что этот момент важен не
00:00:46
только для блока main а вообще для
00:00:47
понимания как работают python программы
00:00:50
итак сам вопрос состоит из нескольких
00:00:54
простых частей поэтому мы пойдем по
00:00:55
частям я буду специальных проговаривать
00:00:57
может быть не один раз просто чтобы вы
00:00:59
поняли и запомнили первый факт который
00:01:01
крайне важен для нас для всех
00:01:03
и он очень простой любой код python
00:01:06
лежит в модуле ну я думаю всем
00:01:09
практически это очевидно но еще раз
00:01:11
повторю любой наш кот лежит в каком-то
00:01:13
модуль модуль это файл с расширением п
00:01:16
то есть вот у нас 6 сек он стартер они
00:01:18
пустые ну думаю каждый из вас если уже
00:01:22
кот начал что-то писать там даже привет
00:01:23
мир он уже понимать что такое модуль
00:01:25
питоне это файл которому нас написан код
00:01:28
все вот это первый факт любой код лежит
00:01:31
модуль факт номер два
00:01:33
любой модуль имеет скрытый атрибут name
00:01:36
имя который мы присваивает интерпретатор
00:01:39
я сейчас этого не покажу мы к этому
00:01:41
вернемся буквально через минуту пока
00:01:43
просто поверьте на слово что у каждого
00:01:45
модуля у каждого есть атрибут name
00:01:48
интерпретатор присваивает его имя сейчас
00:01:53
мы немножечко ну напишем небольшой код
00:01:57
как обычно ведут себя новички
00:02:01
банально опять напишем наш
00:02:05
в ней допустим мы будем писать что
00:02:07
выполняется только модули сердце и
00:02:16
возвращаем apple в наш стандартная
00:02:19
банальная функция тут допустим бывает у
00:02:22
новичков какая-то отладочная информация
00:02:28
потом он вызывает допустим нас функцию
00:02:32
что проверить работает ли она что два
00:02:33
плюс два будет 4 вот запустили все
00:02:40
правильно да то есть вот моя про кадабра
00:02:42
то есть наш век это отладочное по пошла
00:02:44
потом то что запущена функция калька в
00:02:46
методе main
00:02:47
ну и 4 это результат вот этого вызова
00:02:51
да все мы проверили нас устраивает
00:02:53
новичок обычно с этого и начинает он
00:02:56
пишет большие модули где все вперемешку
00:03:00
функции тут же вызовы тут же может быть
00:03:03
класс ниже еще функции это нормально
00:03:05
ничего страшного в этом нет все с этого
00:03:06
начинали только потом уже придет умение
00:03:09
правильно организовывать код то есть вот
00:03:12
стандартный какой-то вот набор кода
00:03:14
представим что в second- у нас тоже
00:03:16
что-то уже написано а рано или поздно
00:03:17
любой новичок приходит тому что он
00:03:19
начинает писать несколько модулей
00:03:21
то есть порой этот процесс очень быстро
00:03:24
происходит у нам уже не хватает одного
00:03:25
мы должны понимать что модуль это способ
00:03:28
организовать проект способ организовать
00:03:32
нашу программу то есть например один
00:03:34
модуль у нас может быть для работы со
00:03:35
строками второй модуль для работы с
00:03:37
сетью 3 модуль для работы с базами
00:03:39
данных ну например да то есть мы делим
00:03:42
ответственность на модулей чтобы нам
00:03:44
было легче искать где что лежит мы уже
00:03:46
знаем что вот у нас здесь по строкам
00:03:48
зашел там посмотрю какие есть то есть
00:03:50
модуль это способ организации нашего
00:03:52
проекта рано или поздно мы начинаем
00:03:55
писать 2 3 модуль и так далее ну и
00:03:57
неизбежно приходим к импортом по
00:04:00
абсолютным импортом и относительным есть
00:04:03
отдельное видео рекомендую всем
00:04:04
посмотреть наш таловом тоже пригодится
00:04:06
когда вы начнете импортирует но самое
00:04:09
важное что мы сейчас хотим рассмотреть
00:04:11
это импорт вот этих двух модулей процент
00:04:13
еще раз повторюсь я не буду здесь
00:04:16
не лишних функций писать просто
00:04:17
представьте что здесь точно такой же как
00:04:18
шерсти есть какие-то функции какие-то
00:04:20
вызовы от едва у нас модули а этот
00:04:22
стартер мы создали как запускающий то
00:04:25
есть после чего начнется программу мы
00:04:27
здесь импортируем for us
00:04:29
импортируем секунд мы допустим хотим
00:04:32
какие-то функций языка вызывать ну и
00:04:34
потом пишем принят кто то есть вызываем
00:04:38
функцию коллег из модуль торс с
00:04:41
параметрами 33
00:04:43
то есть мы должны получить 6 понятно что
00:04:46
здесь функция банальным жизни может у
00:04:48
нас такое интересное хорошая функция она
00:04:51
нам нужна мы ее здесь к этим вызывать ну
00:04:53
и дальше как-то что-то использовать
00:04:55
например ее результат передать функции
00:04:57
которые лежат все candy ну и так далее
00:04:59
то есть обычную программу взаимосвязь от
00:05:00
разных модулей и так запускаем что мы
00:05:03
получаем вот и теперь этот вывод
00:05:07
нас совсем не устраивает ведь мы ожидали
00:05:10
только вот это что вы запускается
00:05:12
функция в модуле фёрст
00:05:14
и 6 ну что три плюс три равно 6 а откуда
00:05:17
взялось вот это четыре и еще я
00:05:20
абракадабра у нас тут общем ничего
00:05:21
такого нет у нас все просто вызове
00:05:23
функцию chooser undo
00:05:25
и вот тут мы переходим к следующему
00:05:29
наверно третьему да по счету факту
00:05:31
который крайне важен не только для мы на
00:05:34
вообще для понимания того как устроен и
00:05:37
работает python факт номер три при
00:05:41
импорте
00:05:42
масс выполняется весь код модулем наш
00:05:47
премию виду послами выполняется python
00:05:50
идет построчно и выполняет все
00:05:52
инструкции которые встретит например для
00:05:55
функции он конечно и и не вызовет то
00:05:57
есть он и не запустит он к тому же не
00:05:58
знают какие параметры туда передавать но
00:06:00
он создаст объект функции естественно
00:06:03
это не будет иметь никакого эффекта он
00:06:04
ничего не запустит у нас консоли ничего
00:06:06
не будет написан то есть ничего
00:06:07
страшного не произойдет он ее не
00:06:09
запустит то есть вот это вот принято не
00:06:10
будет ну что функция не запущена он
00:06:13
просто создаст объект и присвоить ему
00:06:15
имя как запомнить что туда надо
00:06:17
передавать a и b и так далее но когда
00:06:20
интерпретатор дойдет вот до этой строчке
00:06:22
при импорте
00:06:23
тут вполне четко написано напечатай
00:06:25
абракадабра он ее напечатает
00:06:27
когда он дойдет до этой строчке тут
00:06:29
написано вызове функции с какими-то
00:06:31
параметрами он ее вызовет то есть это важное
00:06:36
понимание что весь код модули при
00:06:39
импорте когда мы его импортируем
00:06:41
выполняется построчно почему прямо
00:06:43
выполняется как если мы его запустили то
00:06:46
есть сегодня мы запускаем именно вот это
00:06:49
он нам и выводит то есть это выполнение
00:06:51
всего того что там найдется и вот как
00:06:54
раз конструкция main нам нужно по чем
00:06:58
подскажу как сделать чтобы все действия
00:07:01
которые имеют какой-то эффект который
00:07:03
что-то печатает что-то меняют что-то
00:07:04
запускают должны быть гнили а в чем ее
00:07:08
собственный суд суть вот в чем помните я
00:07:12
говорил про второй факт что все модули
00:07:14
имеют имя которые присваивают
00:07:17
интерпретатор ими файловой системе а имя
00:07:20
для питона вот мы здесь попробуем
00:07:23
написать что вам это продемонстрировать
00:07:25
и вот это все мы скопируем и вставим в
00:07:37
каждую каждый из модулей и запустим
00:07:43
допустим вот этот стартер да то есть у
00:07:45
нас здесь импорт first in the second
00:07:46
потом он пишет свой name и потом
00:07:49
выполняет она вот это можно убрать эту
00:07:51
лично что у нас нет пикал пусть этот
00:07:52
вывод итак запускаем старт модуль сердце
00:07:57
все понятно запустил вот этот модуль он
00:07:59
получил во имя и написал старт модуль
00:08:03
secam тоже все понятно а вот третий
00:08:06
внимательный зритель обратил внимание 3
00:08:09
у нас вовсе не стартер хотя казалось бы
00:08:11
воды стартер вот он должен был написать
00:08:13
name no name почему the main и вот это
00:08:16
следующий четвертый факт тот модуль с
00:08:19
которого начинается программа запущены
00:08:22
модуль точка входа его по-разному можно
00:08:24
назвать наша программа должна с чего-то
00:08:26
начинаться с каких-то первых инструкции
00:08:27
как и развиваться своей работе этот
00:08:31
модуль который запущен то точка входа с
00:08:33
которой мы начали программу она получает
00:08:35
интерпретаторе присваивает
00:08:37
вот этот атрибут name равный мы все
00:08:40
остальные модули которые импортированы
00:08:44
они запущены напрямую они получат имя
00:08:48
родные своему названию вышел тот секан
00:08:51
будет все confort стаффорд и так далее
00:08:53
это простой факт
00:08:55
запущенный модуль будет линия name of
00:08:59
main main главный у него начинается
00:09:01
программа все остальные модули будут
00:09:04
иметь на им равные
00:09:05
их имени и файловой системе 1 seconde и
00:09:07
так да и эта конструкция по сути
00:09:11
означает простую фразу если этот модуль
00:09:14
не
00:09:15
импортирован а запущен то выполнить вот
00:09:19
такие к инструкции еще раз повторяю это
00:09:23
имя будет у модуля только если он
00:09:27
запущен напрямую то есть если я вот
00:09:28
сейчас его запущу смотрите что
00:09:30
произойдет вот видите он пишет старт
00:09:32
модуль убрать вот эту фразу он уже не
00:09:35
пишет first как как было когда мы
00:09:36
запускали стартер то есть теперь при
00:09:39
старте интерпретатор самому присвоил имя
00:09:42
моим то есть тебя началась программа
00:09:43
забудь своими фрост и запомни что ты
00:09:46
мент и главное с тебя началось этого нам
00:09:49
и пишите
00:09:51
надеюсь это было понятно и плюс вы сами
00:09:54
по набираете этот код
00:09:55
поэкспериментируйте чтобы понять что
00:09:57
такое ним и моим почему а про эту
00:10:02
конструкцию еще раз повторюсь она
00:10:03
означает всего лишь
00:10:05
если ты запущен напрямую они
00:10:07
импортирован то сделай вот такие вещи
00:10:10
когда этот модуль будет
00:10:12
импортирован если мы где-то импортируем
00:10:17
фёрст
00:10:18
что произойдет интерпретатор встретив
00:10:20
функцию создаст объект опять же повторяю
00:10:23
ничего не вызовет вопросы создаст объект
00:10:25
функции ничего вот этого напечатано не
00:10:27
будет он дойдет вот до этой строки и
00:10:29
проверь и
00:10:30
а имя равно ли мы так как модуль
00:10:33
импортирован мы его импортируем да
00:10:35
откуда ты стартер например то у него имя
00:10:38
будет ними и выйдет force и
00:10:40
соответственно все что внутри он не
00:10:43
выполнить это нам нужно то есть эта
00:10:46
конструкция для чего нужна
00:10:47
первое и предназначение это отладка
00:10:50
какие-то вот тестовые выводы которые вы
00:10:52
делаете обычно потоком в ходе если вы
00:10:54
новичок вы там везде это суете всяких
00:10:56
принты и вызовы функций вот это все
00:10:58
здесь и должно быть то есть например
00:11:00
тесты азарт и если вы смотрели видео про
00:11:04
то что нужно всегда проверять свой код
00:11:06
здесь могут быть асер ты сюда иногда
00:11:09
выводит запуск док тестов и так далее то
00:11:12
есть любые какие-то вещи иногда например
00:11:15
какой-то специфический запуске если
00:11:18
модуль запущен сам по себе это возможно
00:11:19
какие-то настройки для запуска и так
00:11:22
далее то есть это конструкция нужно
00:11:25
именно этой ситуации когда модуль
00:11:28
запущен сам по себе например отладка
00:11:30
самая часто это отладка мы пишем
00:11:32
какой-то класс мы пишем какие-то функции
00:11:34
нам же надо их проверить понятно что то
00:11:37
надо иметь тесты и так далее писать но
00:11:38
тут по-быстрому дал
00:11:40
чисто вот сейчас прямо сейчас звук в эту
00:11:42
секунду проверить что наша функция
00:11:43
работает мы можем конечно тут написать
00:11:46
но как водится мы это здесь забудем и
00:11:48
потом при импорте получаем от всякие
00:11:49
ненужные нам эффекты сторонние это
00:11:53
делать не надо лучше писать вот так в
00:11:56
том числе новичку
00:11:57
нужно ли это новичку писать до тоже тут
00:11:59
две причины первая причина это хорошая
00:12:02
привычка .
00:12:03
я расскажу вам про то что надо правильно
00:12:06
именовать переменные
00:12:07
что надо проверять свой уход писать о
00:12:09
сорта я пытаюсь выработать у вас
00:12:11
правильную привычку которая возможно
00:12:13
сейчас вам не критичные для новичка этот
00:12:15
мы может и ненужность у него один модуль
00:12:17
на фиг я буду писать стараться на самом
00:12:20
деле нужно именно хотя бы для первой это
00:12:22
выработать правильную привычку писать of
00:12:24
main если он конечно вам нужен и второй
00:12:27
момент это группировка то есть помните
00:12:29
как у нас выглядел черт и в начале
00:12:32
там были куча принта а представьте там
00:12:35
допустим 20 функции там будут какие-то
00:12:36
вызовы приняты вызовы принты и потом
00:12:39
когда мы захотим его импортировать у нас
00:12:41
естественно появиться мысль удалить все
00:12:42
эти приняты чтобы они нам не мешались и
00:12:44
не портили нам вывод и нам придется
00:12:46
искать их по всему модуль а тут они у
00:12:48
нас сгруппированы у нас все в одном
00:12:49
месте
00:12:50
то есть если мы хотим какой-то вывод
00:12:51
поменять или убрать у него
00:12:53
здесь все вместе нам не надо вот в кучу
00:12:55
функции рыцарь что у нас обычно потоком
00:12:57
они там перемешаны не надо это все
00:12:59
искать важный момент который хочу
00:13:03
подчеркнуть возможно этот блок бы им
00:13:05
потом он вам и не будет нужен крыш когда
00:13:07
вот уже под проект разрастается этот мы
00:13:10
на это не обязательная вещь не
00:13:11
обязательно в каждый модуль совать
00:13:12
скорее всего общего
00:13:13
он у вас будет там встречаться крайне
00:13:15
редкой вы просто должны понимать что это
00:13:18
такое для чего он нужен
00:13:19
зачем мы вообще это пишет то есть первое
00:13:21
это сгруппировать все действия которые
00:13:23
вызывают хоть какой-то эффект во первых
00:13:26
они лежат в одном месте это раз во
00:13:28
вторых они не портят нам модуль если мы
00:13:31
его импортируем это 2
00:13:32
ну и как я уже говорил для чего нужен мы
00:13:35
сюда выкладываем key to assert и тесты
00:13:37
док тесты либо какую-то спич
00:13:39
специфических запуска для нашего модуля
00:13:44
соответственно что мы должны вынести из
00:13:48
этого видео
00:13:49
подытоживая первое любой код у нас лежит
00:13:53
модули любой python код лежит модули
00:13:56
модуль это способ организации нашего
00:13:58
кода
00:13:59
второе у каждого модуля есть атрибут
00:14:04
name
00:14:05
скрытый который присылается
00:14:06
интерпретатором 3 этот name будет равен
00:14:11
main если этот модуль запущен напрямую
00:14:14
либо
00:14:15
имя модуля файловой системе если этот
00:14:18
модуль импортирован и 4 крайне важно что вам
00:14:21
надо понимать
00:14:23
любой модуль при импорте выполняется как
00:14:25
бы не как если бы мы его запустили
00:14:28
напрямую то есть все функции будут
00:14:31
созданы все принты будут выполнены
00:14:33
поэтому мы и прячем все действия которые
00:14:36
имеют эффект в эту конструкцию чтобы при
00:14:39
импорте это не выполнялось эта
00:14:42
конструкция означает не выполняя его то
00:14:45
что ниже если мы импортируем этот модуль
00:14:50
в принципе на этом пожалуй все вы должны
00:14:52
это попробовать руками по набирать
00:14:54
поэкспериментировать вот с такими вот
00:14:56
импорта ме жду вопросов спасибо

Описание:

Расскажу для чего мы пишем if __name__=='__main__' и кому это может пригодиться. Важные моменты: 1) любой код на питоне лежит в модуле (файл с расширением py) 2) любой модуль при запуске программы получает атрибут __name__ 3) один(!) модуль, с которого программа началась (точка входа) получает имя __main__, все остальные (которые импортированы) получают имя, равное имени в файловой системе, без расширения. Например first 4) Крайне важное для понимания! Любой модуль при импорте выполняется, как если бы мы его запустили отдельно. То есть все принты будут напечатаны(если они не в функциях), любой вызов функции выполнен. if __name__=='__main__' означает "если этот модуль НЕ был импортирован, а запущен напрямую, то..." и все действия в данном блоке НЕ будут выполнены при импорте модуля. Для чего это нужно в том числе новичку: - группировать все наши действия, имеющие эффект, потом их просто найти и менять - отладка, тесты, ассерты, при импорте они не выполнятся - специфичные настройки для запуска Подчеркну, что блок мейн вовсе не обязателен, это просто возможность что-то выполнять в модуле скажем для отладки так, чтобы не получить ненужные эффекты при импорте, если мы забыли отладочные вещи убрать. Присоединяйся к помощи каналу, будет интересно) ✔️Бусти https://boosty.to/python_russian/donate ✔️Юмани 410011506612886 Будь первым везде и всегда, включай уведомления о новых выпусках 🔔

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Конструкция __MAIN__ для чего и кому нужна."?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Конструкция __MAIN__ для чего и кому нужна." выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Конструкция __MAIN__ для чего и кому нужна."?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Конструкция __MAIN__ для чего и кому нужна." на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Конструкция __MAIN__ для чего и кому нужна."?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Конструкция __MAIN__ для чего и кому нужна."?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.