Многие не знают эти Python фишки / ТОП 6 редких фишек Python

Поделиться
HTML-код
  • Опубликовано: 20 июн 2024
  • ⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
    ⭐ Телеграм канал: t.me/+shh-qh1wVicwM2Q5
    В данном видео рассмотрим 6 фишек Python, о которых редко говорят.
    Если вы новичок в Python, то примеры из видео помогут улучшить ваш код и сделать более простые конструкции.
    Многие не знают эти фишки в Python, особенно если речь идет о новичках, и цель данного видео помочь вам в них разобраться.
    📁 Github: github.com/Zproger
    📁 Все плейлисты с уроками: bit.ly/39GaY89
    📁 Связаться со мной: zproger777@gmail.com
    📁 Поддержать канал: github.com/Zproger/donate
    Тайм-коды:
    0:00 - Что будет в видео?
    0:31 - 1. Можно ли добавить атрибуты в функцию?
    1:17 - 1.1 Подвох при использовании атрибутов
    1:48 - 1.2 Стоит ли использовать такой подход?
    2:42 - 2. Как работает for else?
    4:02 - 3. Как работает try else?
    4:56 - 3.1 Где применяют finally на практике?
    5:23 - 4. Разделители int/float. Представление чисел Python
    5:54 - 5. Как выполнить код в Python через строку?
    6:12 - 5.1 Почему eval и exec могут быть опасными?
    6:43 - 5.2 Риск выполнения произвольного кода
    6:54 - 6. Почему Ellipsis != None?
    7:22 - 6.1 Чем отличается Ellipsis от None?
    7:55 - 6.2 Что если записать в список ссылку на самого себя?
    8:28 - 6.3 Как работает бесконечный список?
    8:58 - 6.4 Как используют Ellipsis в виде аргументов функции?
    9:48 - 6.5 Как Ellipsis используется в numpy?
    10:35 - 1000 лайков == Новое видео с фишками Python

Комментарии • 122

  • @user-uo6rq1bl5g
    @user-uo6rq1bl5g Год назад +60

    А у вас было такое что вы запускали print("Hello world") а в итоге вы сидели перед призедентами всех стран и объясняли как вы запустили ракету NASA на Марс и она удачно приземлилась и как вы смогли решить все задачи тысячилетия

    • @zproger
      @zproger  Год назад +15

      Было....

    • @kutsokon
      @kutsokon Год назад +11

      Конечно, было, но я запускал print(“Goodbye world…”)

    • @bobrishe03
      @bobrishe03 Год назад +2

      Разумеется было. И у друга было, и у брата было. Но знаете, вот был у нас такой случай, кузен мой запустил print("Hello world"). И вот вы не поверите, но каким то образом с ним такое не произошло. Я без понятия, что именно он сделал не так, но он не просто не оказался перед президентами всех стран, у него даже ракета NASA на Марс не полетела, можете себе представить?

    • @lintop3908
      @lintop3908 Год назад +3

      Всм, а я просто попрыгал на одной ноге, покружился 5 раз, досчитал до 30 и мне сразу позвонили все президенты, и под подушкой ещё ракету NASA нашёл

    • @maximhlinsky6488
      @maximhlinsky6488 Год назад +1

      У меня после этого кода, удалилась ОС, и выскочило последнее сообщение : "рукожоп!"

  • @posreadyxp3939
    @posreadyxp3939 Год назад +18

    Про Elipsis я знал минимально, а теперь благодаря этому ролику я узнал более подробно о нём и где его использовали/используют. Спасибо

    • @zproger
      @zproger  Год назад

      Рад что видео помогло =)

  • @TopUser2022
    @TopUser2022 Год назад +8

    Знал только 3 фишки, очень полезное видео) Сними, пожалуйста, видео по asyncio, думаю, многим будет полезно)

    • @zproger
      @zproger  Год назад +2

      Когда-то сниму

  • @A5ter
    @A5ter Год назад +3

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

  • @MrPalianytsia
    @MrPalianytsia Год назад +2

    Нравится всё, контент, подача, так держать.

    • @zproger
      @zproger  Год назад

      Благодарю

  • @barik6478
    @barik6478 Год назад +3

    Твой канал для меня - ценная находка! Так держать :)
    Люблю также всякие фишки, связанные с оптимизацией.
    Например, использование while(1) вместо while(True) или (x & 1) вместо (x % 2 == 0), что работают немного быстрее. Хорошая идея для будущего видео, кстати 😉

    • @zproger
      @zproger  Год назад

      Спасибо за идею, надо будет реализовать =)

    • @user-po1ro2rc6j
      @user-po1ro2rc6j Год назад

      а while 1: и while True: не одно и тоже ??

    • @RokyTime
      @RokyTime 7 месяцев назад

      ​@@user-po1ro2rc6jтоже есть такое сомнение. Использовать сразу бул или то, что в него переведется

  • @MagMigo
    @MagMigo Год назад +5

    Лично для себя - ничего нового не узнал, но иногда кидаю твои видео некоторым людям, когда лень объяснять самому :D. На статью всякие не кидаю, потому что знаю, что не прочитают

    • @zproger
      @zproger  Год назад

      А это хорошо, спасибо =))

    • @MagMigo
      @MagMigo Год назад

      Ещё такой прикол: иногда узнаю про что-то и буквально через день-два в твоём видео будет рассказываться, что это
      Ещё, может быть, тут кто-то знает hellowfacey (но вряд ли), рил крутой челик был, благодаря ему я в питоне стал из начинающего в почти не начинающего, хд
      Максимум, что я серьёзного писал и сейчас пишу - библиотека для создания дс ботов, сложновато в некоторых моментах, но в целом - норм.
      Хотелось бы ролик про архитектуру DDD, не до конца её понимаю

  • @inquisitor_okabe
    @inquisitor_okabe Год назад +1

    Честно - зашёл с убеждением, что увижу то, что уже знаю. Внезапно, не знал нихрена.

    • @zproger
      @zproger  Год назад

      Это хорошо, значит буду продолжать =)

  • @xenopses
    @xenopses Год назад +3

    Вот последняя реализация троеточия очень хороша очень. мне понравилось. я вот этот момент вообще пропустил видимо в жизни. Вот такие видио нужны очень . Такие вот крохотные фишки делают код нереально красивым .

    • @zproger
      @zproger  Год назад

      Благодарю

  • @hhhhhhhhhgfh
    @hhhhhhhhhgfh Год назад +4

    Учусь в магистратуре и у меня начался курс параллельного программирования. Выполняю задания на python. Фишки с "else" очень пригодятся, спасибо тебе большое!!!

    • @vladimirkorshunov7734
      @vladimirkorshunov7734 Год назад +1

      Параллельное программирование на Python? Привет многопоточность. :)

    • @zproger
      @zproger  Год назад

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

  • @IvanIvanov-dh3sg
    @IvanIvanov-dh3sg Год назад +3

    Спасибо за интересное видео, респект автору)

  • @T0unFl3it
    @T0unFl3it Год назад

    Спасибо, видео интересное! Знал о большинстве возможностей, про Ellipsis чуток нового только добавилось🙂 Большая часть из этих возможностей будет поддерживаться также и в моём будущем языке программирования, за исключением динамического добавления атрибутов в объект, как показано в первом примере (с этим гораздо сложнее, чем в Python, т.к. язык будет иметь градуальную типизацию и явное объявление слотов/свойств данных в классах, и вообще построен во многом иначе: будет упор на модульность и расширяемость синтаксиса и семантики языка, а также используемой модели данных. Вместо динамического добавления атрибутов будет поддерживаться работа с динамически добавляемыми метаданными, хранимыми в специальном "магическом" свойстве "^_meta_^", существующем во всех объектах). Вообще, добавление произвольных пользовательских атрибутов в функциональные объекты "на лету" (как в функции "test" на 1:08) требуется достаточно редко, в отличие от "статических" метаданных, добавляемых декораторами в местах объявления функций, и я удивлён, что автор ролика нашёл этому практическое применение😮 Возможно, в телеграм-ботах это используется чаще, чем в остальном коде на Python, плохо знаком с этим пока😊

  • @dmitriyneledva4693
    @dmitriyneledva4693 Год назад +2

    я недавно узнал, что словарный дэл вырезает рэйнджи в листах:
    l =[1,2,3,4,5,6,7]
    del [1:3] l
    # l == [1,4,5,6,7]

  • @alexes.bochkarev
    @alexes.bochkarev 10 месяцев назад

    Про for else узнал в процессе написания боевого кода, когда else внутри цикла не отрабатывал. Удивился, когда узнал, что нужно выносить else за пределы цикла

  • @yuriandrienko4220
    @yuriandrienko4220 Год назад +1

    Как говорил великий Диоген: сколько же в мире есть вещей, без которых я могу обойтись.

  • @QwDragon
    @QwDragon Год назад +1

    Вот это реально крутые фишки!

    • @zproger
      @zproger  Год назад

      Благодарю

  • @starstroy4949
    @starstroy4949 Год назад +6

    Здравствуйте ! Мне 47 лет, в программировании ноль. Имею тех. образование.Недавно увидел один из ваших роликов… и понял,что не хочу стареть в полном неведении в данной сфере😁. Приобрёл книгу Тони Гэддиса(Python ).Пишу первые программки print,a=float(input(‘…..’ ,..))и т.п.Вопрос:как вы считаете стоит ли мне заниматься этим в серьез(могу ли претендовать на работу в будущем) учитывая возраст😞?Если у меня есть шанс , с удовольствием бы ознакомился с вашими советами и курсами. Спасибо!

    • @zproger
      @zproger  Год назад +2

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

  • @pylounge
    @pylounge Год назад +1

    Круто. Про ссылку на список в списке не знал)

    • @zproger
      @zproger  Год назад +1

      Благодарю за комментарий, рад видеть тебя на канале =)

  • @seoonlyRU
    @seoonlyRU Год назад +1

    нормас))) лайк от СЕООНЛИ

  • @user-po1ro2rc6j
    @user-po1ro2rc6j Год назад

    Питон, конечно же прекрасный язык программирования, но во всех мануалах и туториалах написано что лучше не переопределять функцию на саму себя. И лучше не заниматься последовательным присваиванием одного объекта двум и более "переменным", потому что если вторая или последующая "переменная" примет изменяемую последовательность на месте, то вслед за одной поменяются все остальные "переменные" которые участвовали в последовательном присваивании. Так что лучше разделять и упорядочивать, так и приятней читать после кого-то код и код становится обслуживаемым и менее тривиальным .... ;) Короче всем удачи в изучении Пайтона !

  • @timgen-iu1qo
    @timgen-iu1qo Год назад +1

    4:02 А почему не записать print в try, под строчкой 10 / number? Если тут разницы нет, то есть случаи где есть?

  • @tinylith1603
    @tinylith1603 Год назад

    если говорить об else для циклов, можно сразу вспомнить, как из вложенного цикла прервать выполнение цикла снаружи:
    for i in range(0,m):
    for j in range(0,n):
    if matrix[i][j] == 0:
    break
    else:
    continue
    break
    Здесь в случае, если мы находим 0 в матрице, срабатывает первый break, пропускается else и отрабатывает второй break, завершая внешний цикл, если же элемент ненулевой, else: continue продолжает выполнение внешнего цикла, но вообще такой код обычно требует рефакторинга

  • @4oxerlive
    @4oxerlive Год назад

    Насчет TgBot'a. Для записи нескольких данных для каждой сессии была инициализирована переменная со пустым списком. В конце работы, после передачи данных, список очищался. И в начале была проверка, пустой ли список.
    Костыли)

  • @zluka7951
    @zluka7951 Год назад

    ку, какой дистрибутив ты используешь?? Помню ты где-то отвечал уже, но не могу найти :

  • @user-gf6er4ug6g
    @user-gf6er4ug6g Год назад

    я знал про eval, exec про связку while else, про связку try except finally, а вот про try - else - не знал.
    Знал про атрибуты функции.
    Про Елипсис так нифига и не понял.
    Причем тут список помещенный сам в себя? То что я могу бесконечно извлекать из него нулевой элемент это закономерно - бесконечная ссылка на самого себя. Хотя не обязательно нулевой, он может быть любый, может быть во вложенном списке, и в кортеже, и со значениями словаря такая шляпа тоже работает)
    Аналогично и с атрибутами класса(функции) - можно добавить ссылку на самого себя и извлекать до бесконечности.
    И причем тут Елипсис? Я поместил в список Елипсис, но он не стал ссылкой на список.
    Надо признать, к моему великому стыду, я раньше не пробовал поместить список сам в себя. Но то что там появляются три точки - походу просто схожий синтаксис, но не Елипсис.
    Разделение подчеркиванием целых чисел - только с версии 3.6

  • @Enuvin
    @Enuvin Год назад +2

    Знаешь ли ты, вдоль ночных дорог

  • @scrooge6603
    @scrooge6603 Год назад +2

    Я ни одной штуки не знал, 2 года в разработке но всеравно интересные штуки

    • @zproger
      @zproger  Год назад +1

      Благодарю. Это круто что всегда есть новые фишки, даже спустя много лет
      разработки. Сам постоянно нахожу что-то интересное =)

  • @GasanIsv
    @GasanIsv Год назад +7

    Довольно познавательный контент, если ты новичок в написании кода на Python. Лично для меня новое было только про элипсис, но все равно новое же). Продолжай в том же духе! (づ ̄ 3 ̄)づ

    • @zproger
      @zproger  Год назад +1

      Спасибо, рад стараться =)

  • @witalya228
    @witalya228 Год назад +1

    фишка с for else удобная, раньше были случаи где это помогло бы

  • @user-io7ji9uz4y
    @user-io7ji9uz4y Год назад +1

    Хароош

    • @zproger
      @zproger  Год назад +1

      Благодарю =)

  • @aibaster
    @aibaster Год назад +1

    А это всё из-за отсутствия типизации.... А вот была бы типизация.....

  • @TheAlexandr124
    @TheAlexandr124 Год назад

    Приятно что автор читает комментарии. Знал только про инфо перед элепсис)
    А первую фишку, так вообще не понял)))
    Круто!

  • @KvantGD
    @KvantGD Год назад +2

    Помню как начал писать программу для разделения строки по символу... До того как узнал про split

    • @zproger
      @zproger  Год назад

      :D

    • @nakidai
      @nakidai Год назад

      Но ведь для разделения по символам надо использовать list 🤔

  • @NisT_10
    @NisT_10 Год назад

    Eval и Exec очень полезные функции, без eval я вообще не смог бы жить) Но! Они действительно очень опасные и именно поэтому... from ast import literal_eval)

  • @DmitryRomantsov
    @DmitryRomantsov Год назад +1

    Нууу ,знать я знаю, но про ... и про for else - регулярно забываю

  • @MrEmileify
    @MrEmileify Год назад

    круть

  • @markkogan6551
    @markkogan6551 Год назад +1

  • @eagold
    @eagold Год назад +1

    для меня было новым else у фора и елипсис

  • @Anonim-im6ln
    @Anonim-im6ln Год назад +1

    👍👍👍👍👍

  • @user-sl5lc8xx4q
    @user-sl5lc8xx4q Год назад +1

    5 из 6 но почему-то эллипсис не знал

  • @user-sb3dy6mk6s
    @user-sb3dy6mk6s Год назад

    Немного не понял, в чем тогда различие между b = eval('a + 2') и b = a + 2 ??? Объясните, пожалуйста.

    • @yuriandrienko4220
      @yuriandrienko4220 Год назад

      Eval позволяет сделать сам алгоритм расчета динамическим. Представьте, например, что расчетную формулу вводит пользователь, хотя это и плохой пример.

  • @eugenedukatta9355
    @eugenedukatta9355 7 месяцев назад

    "В питоне все есть объекты, поэтому мы можем использовать функционал как для любого объекта..." ага, прикрепите атрибут к целому числу (к объекту типа int) и покажите что у вас получилось

  • @mrLumen2
    @mrLumen2 Год назад +1

    Для "for ... else ..." лучше бы взяли лингвистическую конструкцию "for ... after pass"

    • @zproger
      @zproger  Год назад

      возможно, возможно

  • @dazdess
    @dazdess Год назад +1

    Ничего нового не узнал. Обычное видео пересказа книги Лутца

    • @zproger
      @zproger  Год назад

      Странно, потому что я не брал примеры из этой книги

    • @dazdess
      @dazdess Год назад

      @@zproger сейчас в параллель читаю. Всё что ты рассказываешь там есть, за исключением последнего)

  • @user-ed3uu2lx9v
    @user-ed3uu2lx9v Год назад +1

    С полями для функции это говноподход js. Если надо добавить что то к событию унаследуйся от него или оберни его.

    • @zproger
      @zproger  Год назад

      Там была такая задача, что это не сработает, только добавление аргументов послужило выходом из ситуации

  • @cryptoworkdonkey
    @cryptoworkdonkey Год назад +1

    eval() осмеливаюсь использовать только если возвращается bool .

  • @sabovruslan
    @sabovruslan Год назад +1

    Чудове відео, але так як я тіки починаю вивчати пайтон, то під кінець не дуже зрозуміло було..

    • @zproger
      @zproger  Год назад

      Это придет с опытом

  • @konstkaras
    @konstkaras Год назад

    Здравствуйте! Пишу на Java, заглянул посмотреть что у вас есть. (Числа через _ у нас тоже есть). Интересно, да.

    • @konstkaras
      @konstkaras Год назад

      1. В Java этого нет, объекты это объекты, методы это методы. Если есть такое усложнение, надо делать класс и объект.
      2. for/else нет. Может быть и полезно, но в целом сам break не любят и используют редко. Можно вынести в отдельный метод и сделать return вместо break.
      3. catch/else нет, а почему содержимое блока else не вставить просто в конце try? или после finally в том же методе?
      4. это есть;)
      5. этого нет - противоречит компилируемой природе языка, и да, опасно, плюс усложняет отладку. Так-то есть и вызываемые из Java-кода компиляторы, и встраиваемые интерпретаторы третьих языков, и это применяется во всяких служебных приложениях, но самому использовать - сильно на любителя.
      6. если объект ссылается на себя - усложняет и сериализацию, и отладку (падает toString), так что это избегают хотя бы для данных; а тип такого объекта - он сам себе тип. А так абстракция интересная, но в Java нет tuples и много чего ещё для чего ... нужен.

  • @andreu_k
    @andreu_k Год назад +1

    Ну 2 фишки знал...

  • @user-io7ji9uz4y
    @user-io7ji9uz4y Год назад +1

    Круто конечно, но я вряд-ли буду такое использовать но знать такое всё же неплохо(могу в**бываться)

    • @zproger
      @zproger  Год назад +1

      А почему бы и нет =)

  • @user-vl1el8bp7y
    @user-vl1el8bp7y Год назад +1

    Две фишки я знал

  • @azamtoiri
    @azamtoiri Год назад +1

    Можно название темы?

  • @thmUNIX
    @thmUNIX 10 месяцев назад

    знал 4/6 фишек

  • @mooovies6645
    @mooovies6645 Год назад

    Елсе это зайти в душ после удачной пробежки :) иначе может случится что-то что в душ не попадешь :)

  • @nikitacunskis1853
    @nikitacunskis1853 Год назад

    for else это очень странный try catch

  • @Yevgeniy2010
    @Yevgeniy2010 Год назад +1

    Знал только eval, остальные либо нет, либо частями

  • @mrslashx
    @mrslashx Год назад +1

    "Массивная рекурсия"

  • @ARSEN55630
    @ARSEN55630 Год назад

    Я взнав с цього відео про Elipsis

  • @alexeyxopyc2471
    @alexeyxopyc2471 Год назад

    все равно не понял почему называется эллипсис и почему это считается фишкой) тоесть мне понятно как отрабатывает а[0][0][0]... но это же просто ссылка на изначальный список в 0 индексе :) а вот с примером bool(...) и bool(none) непонятно - что помещается в bool() при (...)? такое ощущение что (none) это бесконечная пустота, а (...) бесконечное непонятно что)

    • @edgarfedosov1440
      @edgarfedosov1440 Год назад

      ... - указатель на None. А None - вообще ничего. :))

  • @artugun1
    @artugun1 Год назад

    А ты решила нужн finally? Если это пришло от C, то нет вопросов

  • @sergeibalmondov5015
    @sergeibalmondov5015 Год назад

    Я прочитал 66 страниц книги think python за 2 дня. Это нормально?

  • @gleznik
    @gleznik Год назад +1

    Есть ли смысл смотреть подобные видео если знаешь основы языка и то не досконально ?

    • @zproger
      @zproger  Год назад +1

      Есть, будет более глубокое понимание

  • @Gorlung
    @Gorlung Год назад

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

  • @mrfang5908
    @mrfang5908 Год назад

    а фишки где?

  • @Sultan69996
    @Sultan69996 3 месяца назад

    А вы знали что если написать хороший комментарий автор данного канала улыбнётся 😂😂😂😂😂? Теперь вы знаете что это возможно 😅😅😅😅😅.

  • @equilibrado092
    @equilibrado092 Год назад +1

    Педагог из тебя не оч

  • @nargan1129
    @nargan1129 Год назад

    1) Не знал
    2) Не знал что else выполняется если не сработал break (или если его нет)
    3) Не знал что в этой конструкции могут быть else и finally
    4) Не знал
    5) Знал
    6) Не знал 6.2, 6.3, 6.4 и 6.5
    И да, ты просто переводишь контент с канала mCoding, а не делаешь его сам.

    • @zproger
      @zproger  Год назад +1

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

  • @katestar6578
    @katestar6578 Год назад +1

    веселый набор кривых и поломанных костылей