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

  Переглядів 47,961

ZProger [ IT ]

ZProger [ IT ]

День тому

⭐ Курс ООП и Приват канал: 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 Рік тому
А у вас было такое что вы запускали print("Hello world") а в итоге вы сидели перед призедентами всех стран и объясняли как вы запустили ракету NASA на Марс и она удачно приземлилась и как вы смогли решить все задачи тысячилетия
@zproger
@zproger Рік тому
Было....
@kutsokon
@kutsokon Рік тому
Конечно, было, но я запускал print(“Goodbye world…”)
@bobrishe03
@bobrishe03 Рік тому
Разумеется было. И у друга было, и у брата было. Но знаете, вот был у нас такой случай, кузен мой запустил print("Hello world"). И вот вы не поверите, но каким то образом с ним такое не произошло. Я без понятия, что именно он сделал не так, но он не просто не оказался перед президентами всех стран, у него даже ракета NASA на Марс не полетела, можете себе представить?
@lintop3908
@lintop3908 Рік тому
Всм, а я просто попрыгал на одной ноге, покружился 5 раз, досчитал до 30 и мне сразу позвонили все президенты, и под подушкой ещё ракету NASA нашёл
@maximhlinsky6488
@maximhlinsky6488 Рік тому
У меня после этого кода, удалилась ОС, и выскочило последнее сообщение : "рукожоп!"
@posreadyxp3939
@posreadyxp3939 Рік тому
Про Elipsis я знал минимально, а теперь благодаря этому ролику я узнал более подробно о нём и где его использовали/используют. Спасибо
@zproger
@zproger Рік тому
Рад что видео помогло =)
@A5ter
@A5ter Рік тому
Спасибо! Как раз тренировался в написании ботов для телеги, очень помогло.
@zproger
@zproger Рік тому
=))
@TopUser2022
@TopUser2022 Рік тому
Знал только 3 фишки, очень полезное видео) Сними, пожалуйста, видео по asyncio, думаю, многим будет полезно)
@zproger
@zproger Рік тому
Когда-то сниму
@alexes.bochkarev
@alexes.bochkarev 9 місяців тому
Про for else узнал в процессе написания боевого кода, когда else внутри цикла не отрабатывал. Удивился, когда узнал, что нужно выносить else за пределы цикла
@barik6478
@barik6478 Рік тому
Твой канал для меня - ценная находка! Так держать :) Люблю также всякие фишки, связанные с оптимизацией. Например, использование while(1) вместо while(True) или (x & 1) вместо (x % 2 == 0), что работают немного быстрее. Хорошая идея для будущего видео, кстати 😉
@zproger
@zproger Рік тому
Спасибо за идею, надо будет реализовать =)
@user-po1ro2rc6j
@user-po1ro2rc6j Рік тому
а while 1: и while True: не одно и тоже ??
@RokyTime
@RokyTime 5 місяців тому
​@@user-po1ro2rc6jтоже есть такое сомнение. Использовать сразу бул или то, что в него переведется
@MrPalianytsia
@MrPalianytsia Рік тому
Нравится всё, контент, подача, так держать.
@zproger
@zproger Рік тому
Благодарю
@IvanIvanov-dh3sg
@IvanIvanov-dh3sg Рік тому
Спасибо за интересное видео, респект автору)
@zproger
@zproger Рік тому
Спасибо
@xenopses
@xenopses Рік тому
Вот последняя реализация троеточия очень хороша очень. мне понравилось. я вот этот момент вообще пропустил видимо в жизни. Вот такие видио нужны очень . Такие вот крохотные фишки делают код нереально красивым .
@zproger
@zproger Рік тому
Благодарю
@T0unFl3it
@T0unFl3it Рік тому
Спасибо, видео интересное! Знал о большинстве возможностей, про Ellipsis чуток нового только добавилось🙂 Большая часть из этих возможностей будет поддерживаться также и в моём будущем языке программирования, за исключением динамического добавления атрибутов в объект, как показано в первом примере (с этим гораздо сложнее, чем в Python, т.к. язык будет иметь градуальную типизацию и явное объявление слотов/свойств данных в классах, и вообще построен во многом иначе: будет упор на модульность и расширяемость синтаксиса и семантики языка, а также используемой модели данных. Вместо динамического добавления атрибутов будет поддерживаться работа с динамически добавляемыми метаданными, хранимыми в специальном "магическом" свойстве "^_meta_^", существующем во всех объектах). Вообще, добавление произвольных пользовательских атрибутов в функциональные объекты "на лету" (как в функции "test" на 1:08) требуется достаточно редко, в отличие от "статических" метаданных, добавляемых декораторами в местах объявления функций, и я удивлён, что автор ролика нашёл этому практическое применение😮 Возможно, в телеграм-ботах это используется чаще, чем в остальном коде на Python, плохо знаком с этим пока😊
@MagMigo
@MagMigo Рік тому
Лично для себя - ничего нового не узнал, но иногда кидаю твои видео некоторым людям, когда лень объяснять самому :D. На статью всякие не кидаю, потому что знаю, что не прочитают
@zproger
@zproger Рік тому
А это хорошо, спасибо =))
@MagMigo
@MagMigo Рік тому
Ещё такой прикол: иногда узнаю про что-то и буквально через день-два в твоём видео будет рассказываться, что это Ещё, может быть, тут кто-то знает hellowfacey (но вряд ли), рил крутой челик был, благодаря ему я в питоне стал из начинающего в почти не начинающего, хд Максимум, что я серьёзного писал и сейчас пишу - библиотека для создания дс ботов, сложновато в некоторых моментах, но в целом - норм. Хотелось бы ролик про архитектуру DDD, не до конца её понимаю
@hhhhhhhhhgfh
@hhhhhhhhhgfh Рік тому
Учусь в магистратуре и у меня начался курс параллельного программирования. Выполняю задания на python. Фишки с "else" очень пригодятся, спасибо тебе большое!!!
@vladimirkorshunov7734
@vladimirkorshunov7734 Рік тому
Параллельное программирование на Python? Привет многопоточность. :)
@zproger
@zproger Рік тому
Спасибо за комментарий, рад что видео было полезное =)
@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 продолжает выполнение внешнего цикла, но вообще такой код обычно требует рефакторинга
@inquisitor_okabe
@inquisitor_okabe Рік тому
Честно - зашёл с убеждением, что увижу то, что уже знаю. Внезапно, не знал нихрена.
@zproger
@zproger Рік тому
Это хорошо, значит буду продолжать =)
@dmitriyneledva4693
@dmitriyneledva4693 Рік тому
я недавно узнал, что словарный дэл вырезает рэйнджи в листах: l =[1,2,3,4,5,6,7] del [1:3] l # l == [1,4,5,6,7]
@QwDragon
@QwDragon Рік тому
Вот это реально крутые фишки!
@zproger
@zproger Рік тому
Благодарю
@seoonlyRU
@seoonlyRU Рік тому
нормас))) лайк от СЕООНЛИ
@4oxerlive
@4oxerlive Рік тому
Насчет TgBot'a. Для записи нескольких данных для каждой сессии была инициализирована переменная со пустым списком. В конце работы, после передачи данных, список очищался. И в начале была проверка, пустой ли список. Костыли)
@starstroy4949
@starstroy4949 Рік тому
Здравствуйте ! Мне 47 лет, в программировании ноль. Имею тех. образование.Недавно увидел один из ваших роликов… и понял,что не хочу стареть в полном неведении в данной сфере😁. Приобрёл книгу Тони Гэддиса(Python ).Пишу первые программки print,a=float(input(‘…..’ ,..))и т.п.Вопрос:как вы считаете стоит ли мне заниматься этим в серьез(могу ли претендовать на работу в будущем) учитывая возраст😞?Если у меня есть шанс , с удовольствием бы ознакомился с вашими советами и курсами. Спасибо!
@zproger
@zproger Рік тому
Здравствуйте, возраст не имеет значения, главное выделять хотя бы немного времени каждый день, не нужно сразу ставить себе цель изучать программирование по 8 часов в день, ибо можно быстро перегореть, нужно начинать с маленьких шагов, например поставить себе цель каждый день прорабатывать 1 страницу из книги, со временем вы привыкните к этой нагрузке и появится желание изучать больше. Самое главное всё это закреплять практикой.
@timgen-iu1qo
@timgen-iu1qo Рік тому
4:02 А почему не записать print в try, под строчкой 10 / number? Если тут разницы нет, то есть случаи где есть?
@yuriandrienko4220
@yuriandrienko4220 Рік тому
Как говорил великий Диоген: сколько же в мире есть вещей, без которых я могу обойтись.
@user-gf6er4ug6g
@user-gf6er4ug6g Рік тому
я знал про eval, exec про связку while else, про связку try except finally, а вот про try - else - не знал. Знал про атрибуты функции. Про Елипсис так нифига и не понял. Причем тут список помещенный сам в себя? То что я могу бесконечно извлекать из него нулевой элемент это закономерно - бесконечная ссылка на самого себя. Хотя не обязательно нулевой, он может быть любый, может быть во вложенном списке, и в кортеже, и со значениями словаря такая шляпа тоже работает) Аналогично и с атрибутами класса(функции) - можно добавить ссылку на самого себя и извлекать до бесконечности. И причем тут Елипсис? Я поместил в список Елипсис, но он не стал ссылкой на список. Надо признать, к моему великому стыду, я раньше не пробовал поместить список сам в себя. Но то что там появляются три точки - походу просто схожий синтаксис, но не Елипсис. Разделение подчеркиванием целых чисел - только с версии 3.6
@pylounge
@pylounge Рік тому
Круто. Про ссылку на список в списке не знал)
@zproger
@zproger Рік тому
Благодарю за комментарий, рад видеть тебя на канале =)
@user-po1ro2rc6j
@user-po1ro2rc6j Рік тому
Питон, конечно же прекрасный язык программирования, но во всех мануалах и туториалах написано что лучше не переопределять функцию на саму себя. И лучше не заниматься последовательным присваиванием одного объекта двум и более "переменным", потому что если вторая или последующая "переменная" примет изменяемую последовательность на месте, то вслед за одной поменяются все остальные "переменные" которые участвовали в последовательном присваивании. Так что лучше разделять и упорядочивать, так и приятней читать после кого-то код и код становится обслуживаемым и менее тривиальным .... ;) Короче всем удачи в изучении Пайтона !
@zluka7951
@zluka7951 Рік тому
ку, какой дистрибутив ты используешь?? Помню ты где-то отвечал уже, но не могу найти :
@GasanIsv
@GasanIsv Рік тому
Довольно познавательный контент, если ты новичок в написании кода на Python. Лично для меня новое было только про элипсис, но все равно новое же). Продолжай в том же духе! (づ ̄ 3 ̄)づ
@zproger
@zproger Рік тому
Спасибо, рад стараться =)
@witalya228
@witalya228 Рік тому
фишка с for else удобная, раньше были случаи где это помогло бы
@zproger
@zproger Рік тому
Это да
@user-io7ji9uz4y
@user-io7ji9uz4y Рік тому
Хароош
@zproger
@zproger Рік тому
Благодарю =)
@NisT_10
@NisT_10 Рік тому
Eval и Exec очень полезные функции, без eval я вообще не смог бы жить) Но! Они действительно очень опасные и именно поэтому... from ast import literal_eval)
@KvantGD
@KvantGD Рік тому
Помню как начал писать программу для разделения строки по символу... До того как узнал про split
@zproger
@zproger Рік тому
:D
@nakidai
@nakidai Рік тому
Но ведь для разделения по символам надо использовать list 🤔
@markkogan6551
@markkogan6551 Рік тому
@zproger
@zproger Рік тому
@scrooge6603
@scrooge6603 Рік тому
Я ни одной штуки не знал, 2 года в разработке но всеравно интересные штуки
@zproger
@zproger Рік тому
Благодарю. Это круто что всегда есть новые фишки, даже спустя много лет разработки. Сам постоянно нахожу что-то интересное =)
@Anonim-im6ln
@Anonim-im6ln Рік тому
👍👍👍👍👍
@zproger
@zproger Рік тому
=)
@MrEmileify
@MrEmileify Рік тому
круть
@DmitryRomantsov
@DmitryRomantsov Рік тому
Нууу ,знать я знаю, но про ... и про for else - регулярно забываю
@zproger
@zproger Рік тому
Бывает
@aibaster
@aibaster Рік тому
А это всё из-за отсутствия типизации.... А вот была бы типизация.....
@TheAlexandr124
@TheAlexandr124 Рік тому
Приятно что автор читает комментарии. Знал только про инфо перед элепсис) А первую фишку, так вообще не понял))) Круто!
@Enuvin
@Enuvin Рік тому
Знаешь ли ты, вдоль ночных дорог
@zproger
@zproger Рік тому
:)
@eagold
@eagold Рік тому
для меня было новым else у фора и елипсис
@zproger
@zproger Рік тому
Отлично
@user-sb3dy6mk6s
@user-sb3dy6mk6s Рік тому
Немного не понял, в чем тогда различие между b = eval('a + 2') и b = a + 2 ??? Объясните, пожалуйста.
@yuriandrienko4220
@yuriandrienko4220 Рік тому
Eval позволяет сделать сам алгоритм расчета динамическим. Представьте, например, что расчетную формулу вводит пользователь, хотя это и плохой пример.
@mrLumen2
@mrLumen2 Рік тому
Для "for ... else ..." лучше бы взяли лингвистическую конструкцию "for ... after pass"
@zproger
@zproger Рік тому
возможно, возможно
@eugenedukatta9355
@eugenedukatta9355 6 місяців тому
"В питоне все есть объекты, поэтому мы можем использовать функционал как для любого объекта..." ага, прикрепите атрибут к целому числу (к объекту типа int) и покажите что у вас получилось
@cryptoworkdonkey
@cryptoworkdonkey Рік тому
eval() осмеливаюсь использовать только если возвращается bool .
@zproger
@zproger Рік тому
=)
@thmUNIX
@thmUNIX 8 місяців тому
знал 4/6 фишек
@user-sl5lc8xx4q
@user-sl5lc8xx4q Рік тому
5 из 6 но почему-то эллипсис не знал
@zproger
@zproger Рік тому
=)
@user-io7ji9uz4y
@user-io7ji9uz4y Рік тому
Круто конечно, но я вряд-ли буду такое использовать но знать такое всё же неплохо(могу в**бываться)
@zproger
@zproger Рік тому
А почему бы и нет =)
@sabovruslan
@sabovruslan Рік тому
Чудове відео, але так як я тіки починаю вивчати пайтон, то під кінець не дуже зрозуміло було..
@zproger
@zproger Рік тому
Это придет с опытом
@azamtoiri
@azamtoiri Рік тому
Можно название темы?
@zproger
@zproger Рік тому
Dracula
@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 и много чего ещё для чего ... нужен.
@user-vl1el8bp7y
@user-vl1el8bp7y Рік тому
Две фишки я знал
@zproger
@zproger Рік тому
=)
@dazdess
@dazdess Рік тому
Ничего нового не узнал. Обычное видео пересказа книги Лутца
@zproger
@zproger Рік тому
Странно, потому что я не брал примеры из этой книги
@dazdess
@dazdess Рік тому
@@zproger сейчас в параллель читаю. Всё что ты рассказываешь там есть, за исключением последнего)
@mooovies6645
@mooovies6645 Рік тому
Елсе это зайти в душ после удачной пробежки :) иначе может случится что-то что в душ не попадешь :)
@Yevgeniy2010
@Yevgeniy2010 Рік тому
Знал только eval, остальные либо нет, либо частями
@zproger
@zproger Рік тому
=)
@ARSEN55630
@ARSEN55630 Рік тому
Я взнав с цього відео про Elipsis
@mrslashx
@mrslashx Рік тому
"Массивная рекурсия"
@zproger
@zproger Рік тому
=)
@user-ed3uu2lx9v
@user-ed3uu2lx9v Рік тому
С полями для функции это говноподход js. Если надо добавить что то к событию унаследуйся от него или оберни его.
@zproger
@zproger Рік тому
Там была такая задача, что это не сработает, только добавление аргументов послужило выходом из ситуации
@andreu_k
@andreu_k Рік тому
Ну 2 фишки знал...
@zproger
@zproger Рік тому
Круто =)
@alexeyxopyc2471
@alexeyxopyc2471 Рік тому
все равно не понял почему называется эллипсис и почему это считается фишкой) тоесть мне понятно как отрабатывает а[0][0][0]... но это же просто ссылка на изначальный список в 0 индексе :) а вот с примером bool(...) и bool(none) непонятно - что помещается в bool() при (...)? такое ощущение что (none) это бесконечная пустота, а (...) бесконечное непонятно что)
@edgarfedosov1440
@edgarfedosov1440 Рік тому
... - указатель на None. А None - вообще ничего. :))
@nikitacunskis1853
@nikitacunskis1853 Рік тому
for else это очень странный try catch
@artugun1
@artugun1 Рік тому
А ты решила нужн finally? Если это пришло от C, то нет вопросов
@sergeibalmondov5015
@sergeibalmondov5015 Рік тому
Я прочитал 66 страниц книги think python за 2 дня. Это нормально?
@mrfang5908
@mrfang5908 Рік тому
а фишки где?
@gleznik
@gleznik 10 місяців тому
Есть ли смысл смотреть подобные видео если знаешь основы языка и то не досконально ?
@zproger
@zproger 10 місяців тому
Есть, будет более глубокое понимание
@Gorlung
@Gorlung Рік тому
бесят куча путей в консоле.. каждый раз среди них пытаешься за две секунды углядеть сам аутпут.. ты ж видеоблогер.. сделай аккуратненько, для людей..
@Sultan69996
@Sultan69996 2 місяці тому
А вы знали что если написать хороший комментарий автор данного канала улыбнётся 😂😂😂😂😂? Теперь вы знаете что это возможно 😅😅😅😅😅.
@zproger
@zproger 2 місяці тому
;)))
@equilibrado092
@equilibrado092 Рік тому
Педагог из тебя не оч
@zproger
@zproger Рік тому
=D
@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, я ничего не перевожу, покажите мне где на MCoding есть такое видео? И не нужно спамить под каждым видео то, что якобы это перевод, так как вы даже это не проверили, это чисто ваше мнение, которое не подтверждено никакими примерами, такого видео на мкодинг никогда и не было.
@katestar6578
@katestar6578 Рік тому
веселый набор кривых и поломанных костылей
Почему not not value БЫСТРЕЕ bool в Python?
10:36
ZProger [ IT ]
Переглядів 22 тис.
Самый большой бутер в столовке! @krus-kos
00:42
Кушать Хочу
Переглядів 5 млн
18 Фишек Python о которых мало кто говорит
14:13
ТОП 5 Ошибок в написании функций Python
12:46
ZProger [ IT ]
Переглядів 74 тис.
Уроки Python casts #6 - Декораторы
19:50
Oleg Molchanov
Переглядів 140 тис.