00:00 непонятные названия переменных 10:31 использование контактенации 13:05 усложнение кода тем, что и так произойдет по умолчанию #пример: (str(input()) 16:25 использование list compr вместо range 19:15 использование функций map, filter, reduce вместо list compr 23:25 использования вместо while True других конструкций для вечного цикла 23:40 использование квадратных скобок для list compr без необходимости 29:30 использование индексов в цикле for #пример: for i in range(len(list)) 33:30 использование функции len при проверке наличия элементов в коллекции 35:30 использование флага в цикле без необходимости 37:50 в блоке except замалчивание ошибки и неиспользование конкретного исключения
наткнулся на канал случайно несколько дней назад. Никогда не встречал чтобы настолько доходчиво доносили информацию, видео взахлеб залетают. Спасибо дружище👍
Многие ошибки прямо сейчас совершаю и учусь дальше их делать(обучают в онлайн школе програмирования). Спасибо за информацию, просто чудом попал на ваш канал.
Спустя год плотного изучения питона пришел ко всему, что сказано в видео. Больше не понтуюсь колбасой с map и filter. С английским не очень, но под рукой переводчик 24/7, так что проблем с этим нет. Я стал думать о всех, кто будет читать мой код и стараюсь делать его понятным каждому
очень недооцененный контент, автор дает отличные знания и я вообще счастлив что наткнулся на его канал. Так качественно и понятно подавать знания это надо уметь, второй такой человек на мой взгляд это Тимофей Хирьянов
По последнему пункту можно ещё так: try: int('a') except Exception as err: print(f'{err}, {err.args}') Если не знаешь, какие исключения выпадут, то таким образом их можно зафиксировать.
Информация класс !! Но из за ооочень маленького шрифта тяжело присматриваться !! Не у всех зрение как у орла !! Пожалуйста делай шрифт побольше - это не трудно !!
Хочется сказать про dict.get(key,None). Не знаю точно, откуда это пошло, но со своей стороны могу предположить, что это пишется как "напоминалка" другому программисту: мол, ты не забудь, что тут еще может быть None. Наверное, люди предполагают, что, если их get() вернет None, то другой человек может долго думать, а откуда этот None взялся. А так типа видно Но еще раз, я не анализировал столько много кода новичков, как вы, так что только допускаю
Гуглил что делать когда у меня из mongoDb не вернулся узел, как проверить на none да ещё и что бы не писать if. Так вот какая то из вверхних ссылок подсказала что есть get и именно с none. при чём не пример, при этом ссылки на документацию небыло и упоминания что он не нужен тоже. А так как это работает и не сильно было запарно то я так и написал.
блин, я вот вижу что твои ролики суперполезны... но освоить это всё сразу нереально)).. я просмотрю все твои видео и буду их по кругу гонять кжадый день перед сном и во время отдыха, чтобы пока практикую узнавать ситуации хотя бы.. ох
конечно не реально. Я хоть и автор но тоже советую идти постепенно, помни что многие вещи никак не понять если не прочувствовать написав код. То есть пишем много кода -это единственный способ научиться программировать! Ролики никуда не убегут =)
Нравится манера подачи материала, все последовательно и четко. Но "новичк*" всегда лишним кажется. Весь контент у вас основан на обучении и исправлении действий как для начинающих, так и отучении от устаревшего кодинга профессионала. Если опустить "встречал у новичков" на "встречал", то суть не изменится :-) Возможно говорю это не зря, так как являясь подписчиком канала буду буду лучше воспринимать подачу, как и другие.
ну тут логика простая -я рассказываю как раз о том, что часто вижу, в том числе при код-ревью или на форуме. Просто не хочу брать темы с потолка и подумал, что скажем новичок более внимательно отнесется к тому, что показано в видео, если слышит что это частая ошибка/проблема и его тоже может коснуться, чем просто "давайте поговорим о декораторах". Но и вашу точку зрения понимаю, постараюсь избавиться от этого. Полагаю что те, кто посмотрел хоть сколько то видео на канале уже поймут, что речь пойдет о каких то важных вещах, в которых ошибаются программисты.
Как вы относитесь к частому исползованию if : break ? Почему интересуюсь, потому что преподователь часто говорит что бы максимально избегать этой конструкции, но не объясняет толком почему, мол не понятно читающиму будет. А обратной связи с ним нэма, так как запись там...если честно, я как то подсел на этот break..., и потому задался вопросом у Вас
приведите пожалуйста пример, не совсем понимаю. Дело в том, что break это не пара для if, это оператор выхода из цикла. Видимо вы какие то условия проверяете в цикле. Если выложите какой-нибудь код на pastebin и ссылку сюда, то смогу сказать точнее. Пока вроде не вижу проблем
@@ВладимирГригорьевич-у2р я прошу прощения, мне почему то этот комментарий Ютуб не показал, потому не ответил, а сейчас уже не активна ссылка. Сможете еще раз выложить код?
честно говоря, когда видео снимал , у меня был какой то хороший пример из практики наготове, но теперь не могу вспомнить контекст. Короче мап-фильтр хороши для тех кто пришел с других ЯП (где они есть), для любителей функциональной парадигмы, а также при работе с reduce и itertools (местами). Вот так еще можно написать кратко >>> from operator import add >>> map(add, list1, list2) Конечно можно сделать генэксп с zip, но уже не так кратко.
А у меня в Python 3.10 не получается такого результата, как в вашем примере по правилу №5. У меня print((e ** 2 for e in range(10) if e % 2 == 0)) выводит: , а не [0, 4, 16, 36, 64]. Чтобы получить список нужно [ ] ставить. Это специфика данной версии Илия где-то ошибаюсь?
это вы где то ошибаетесь - с круглыми скобками это генэксп, что вам и пишет, если нужен результат, то или действительно формировать список или использовать распаковку в стиле print(*(e ** 2 for e in range(10) if e % 2 == 0)).
@@PythonRussian Понятно, спасибо. Я, собственно, так и думал. Просто я повторил запись, что была на экране (там звездочки не было после print: ...(*(e...) , и удивился, что такой вывод у вас дал именно результат, а не констатацию факта, что используется генэксп. :)). Еще раз спасибо за ролики! Они действительно очень понятны и, что тоже немаловажно, хорошим русским языком озвучены.
это вы как посчитали? с помощью timeit попробуйте конкатенацию трех строковых переменных, а потом формирование ф-строк с ними же. Форматирование быстрее. Плюс промежуточные объекты не создаются в памяти
@@kan4317 у меня питон 3.8, ф-строки на 10 миллионах повторов в среднем формируются за 143 наносекунды, конкатенация переменных 181 наносекунда. Да разница невелика но уж точно не в 3 раза в пользу одного варианта и плюс ф-строки побыстрее, поудобнее и поправильнее.
спасибо вам большое! реально просто не понимал почему это все пишут =) и главное когда спрашиваешь -молчат. Я уж думал это что-то из глубин нашей психологии, а оно вон как оказывается.
00:00 непонятные названия переменных
10:31 использование контактенации
13:05 усложнение кода тем, что и так произойдет по умолчанию #пример: (str(input())
16:25 использование list compr вместо range
19:15 использование функций map, filter, reduce вместо list compr
23:25 использования вместо while True других конструкций для вечного цикла
23:40 использование квадратных скобок для list compr без необходимости
29:30 использование индексов в цикле for #пример: for i in range(len(list))
33:30 использование функции len при проверке наличия элементов в коллекции
35:30 использование флага в цикле без необходимости
37:50 в блоке except замалчивание ошибки и неиспользование конкретного исключения
наткнулся на канал случайно несколько дней назад. Никогда не встречал чтобы настолько доходчиво доносили информацию, видео взахлеб залетают. Спасибо дружище👍
Многие ошибки прямо сейчас совершаю и учусь дальше их делать(обучают в онлайн школе програмирования). Спасибо за информацию, просто чудом попал на ваш канал.
Спустя год плотного изучения питона пришел ко всему, что сказано в видео. Больше не понтуюсь колбасой с map и filter. С английским не очень, но под рукой переводчик 24/7, так что проблем с этим нет. Я стал думать о всех, кто будет читать мой код и стараюсь делать его понятным каждому
очень недооцененный контент, автор дает отличные знания и я вообще счастлив что наткнулся на его канал. Так качественно и понятно подавать знания это надо уметь, второй такой человек на мой взгляд это Тимофей Хирьянов
спасибо за отзыв. В ваших силах помочь - порекомендовать друзьям, поделиться в соцсетях
молодец! Закинул себе в избранное 👌
Супер-бомба, больше видео!
Отличная подача материала, почерпнул новый фишки для себя. Лайк однозначно!
спасибо за видосы!! Очень в книгах не хватает бест практикс разделов
Спасибо! очень поззнавательно.
спасибо, очень полезно! про f строки у меня не было ясности, какой именно вариант использовать, сейчас понятно что просто пишем все на них
у меня есть отдельно видео по ф-строкам, посмотри тоже ua-cam.com/video/vbZTVaulTdk/v-deo.html
Спасибо, отличный туториал!
По последнему пункту можно ещё так:
try:
int('a')
except Exception as err:
print(f'{err}, {err.args}')
Если не знаешь, какие исключения выпадут, то таким образом их можно зафиксировать.
за 26:21 большое спасибо
на форуме решений теперь умничаю, но конечно со ссылкой сюды
ушла всё переписывать! :)
Информация класс !! Но из за ооочень маленького шрифта тяжело присматриваться !! Не у всех зрение как у орла !! Пожалуйста делай шрифт побольше - это не трудно !!
Хочется сказать про dict.get(key,None). Не знаю точно, откуда это пошло, но со своей стороны могу предположить, что это пишется как "напоминалка" другому программисту: мол, ты не забудь, что тут еще может быть None. Наверное, люди предполагают, что, если их get() вернет None, то другой человек может долго думать, а откуда этот None взялся. А так типа видно
Но еще раз, я не анализировал столько много кода новичков, как вы, так что только допускаю
Гуглил что делать когда у меня из mongoDb не вернулся узел, как проверить на none да ещё и что бы не писать if. Так вот какая то из вверхних ссылок подсказала что есть get и именно с none. при чём не пример, при этом ссылки на документацию небыло и упоминания что он не нужен тоже. А так как это работает и не сильно было запарно то я так и написал.
Насчёт лист компрехеншнс, делаю вообще так - [*range(10)]
блин, я вот вижу что твои ролики суперполезны... но освоить это всё сразу нереально)).. я просмотрю все твои видео и буду их по кругу гонять кжадый день перед сном и во время отдыха, чтобы пока практикую узнавать ситуации хотя бы.. ох
конечно не реально. Я хоть и автор но тоже советую идти постепенно, помни что многие вещи никак не понять если не прочувствовать написав код. То есть пишем много кода -это единственный способ научиться программировать! Ролики никуда не убегут =)
и вот этот list(map) постоянно я использую, ну теперь =) использовал =)
Нравится манера подачи материала, все последовательно и четко. Но "новичк*" всегда лишним кажется. Весь контент у вас основан на обучении и исправлении действий как для начинающих, так и отучении от устаревшего кодинга профессионала. Если опустить "встречал у новичков" на "встречал", то суть не изменится :-)
Возможно говорю это не зря, так как являясь подписчиком канала буду буду лучше воспринимать подачу, как и другие.
ну тут логика простая -я рассказываю как раз о том, что часто вижу, в том числе при код-ревью или на форуме. Просто не хочу брать темы с потолка и подумал, что скажем новичок более внимательно отнесется к тому, что показано в видео, если слышит что это частая ошибка/проблема и его тоже может коснуться, чем просто "давайте поговорим о декораторах". Но и вашу точку зрения понимаю, постараюсь избавиться от этого. Полагаю что те, кто посмотрел хоть сколько то видео на канале уже поймут, что речь пойдет о каких то важных вещах, в которых ошибаются программисты.
1:49 скажите пожалуйста какая клавиша раставила пробелы тут и где можно найти список таких полезностей.
вот тут посмотри ua-cam.com/video/Jmkep5EbQQY/v-deo.html
Спасибо
Как вы относитесь к частому исползованию
if : break ?
Почему интересуюсь, потому что преподователь часто говорит что бы максимально избегать этой конструкции, но не объясняет толком почему, мол не понятно читающиму будет. А обратной связи с ним нэма, так как запись там...если честно, я как то подсел на этот break..., и потому задался вопросом у Вас
приведите пожалуйста пример, не совсем понимаю. Дело в том, что break это не пара для if, это оператор выхода из цикла. Видимо вы какие то условия проверяете в цикле. Если выложите какой-нибудь код на pastebin и ссылку сюда, то смогу сказать точнее. Пока вроде не вижу проблем
@@PythonRussian да да, в WHILE, что то я тупанул, не уточнив, а код как нибудь потом, а то чот я стесняюсь =)
@@PythonRussian pastebin.com/MEvikSWM
@@ВладимирГригорьевич-у2р я прошу прощения, мне почему то этот комментарий Ютуб не показал, потому не ответил, а сейчас уже не активна ссылка. Сможете еще раз выложить код?
@@PythonRussian страннол девки пляшут, я же выложил повторно, нет коммента, ютуб походу удалил....
Так а в каких все же случаях map и filter будут понятнее?)
честно говоря, когда видео снимал , у меня был какой то хороший пример из практики наготове, но теперь не могу вспомнить контекст. Короче мап-фильтр хороши для тех кто пришел с других ЯП (где они есть), для любителей функциональной парадигмы, а также при работе с reduce и itertools (местами). Вот так еще можно написать кратко
>>> from operator import add
>>> map(add, list1, list2)
Конечно можно сделать генэксп с zip, но уже не так кратко.
@@PythonRussian спасибо. Не знал, что map умеет работать с множеством iterable сразу))
А у меня в Python 3.10 не получается такого результата, как в вашем примере по правилу №5. У меня print((e ** 2 for e in range(10) if e % 2 == 0)) выводит: , а не [0, 4, 16, 36, 64]. Чтобы получить список нужно [ ] ставить. Это специфика данной версии Илия где-то ошибаюсь?
это вы где то ошибаетесь - с круглыми скобками это генэксп, что вам и пишет, если нужен результат, то или действительно формировать список или использовать распаковку в стиле print(*(e ** 2 for e in range(10) if e % 2 == 0)).
@@PythonRussian Понятно, спасибо. Я, собственно, так и думал. Просто я повторил запись, что была на экране (там звездочки не было после print: ...(*(e...) , и удивился, что такой вывод у вас дал именно результат, а не констатацию факта, что используется генэксп. :)).
Еще раз спасибо за ролики! Они действительно очень понятны и, что тоже немаловажно, хорошим русским языком озвучены.
Not bad, not bad
1 == 1, ыыыы =) прям как я
👍
В - внезапность
не уловил...
Не ожиданно услышать вот.
Конкотенация быстрее форматирования примерно в 3 раза
А еще в блоке except лучше писать print(repr(e)) выведет еще и имя исключения
это вы как посчитали? с помощью timeit попробуйте конкатенацию трех строковых переменных, а потом формирование ф-строк с ними же. Форматирование быстрее. Плюс промежуточные объекты не создаются в памяти
@@PythonRussian только что попробовал. 10кк итераций с f-строками дают в среднем 2.3 сек
Конкотенация тех же переменных 1.8 сек
Тройной прирост у меня получался без определения переменных, в тупую готовые строки
@@kan4317 у меня питон 3.8, ф-строки на 10 миллионах повторов в среднем формируются за 143 наносекунды, конкатенация переменных 181 наносекунда. Да разница невелика но уж точно не в 3 раза в пользу одного варианта и плюс ф-строки побыстрее, поудобнее и поправильнее.
@@PythonRussian каюсь, поставил в неравные условия, при конкотенации не добавлял пробелы
недооцененный канал...а жаль...масса полезного...
Не знаю, откудa Вы это взяли: e**2 for e in range(10) if e%2==0, но на питоне 3.5.3 уже работает range(0,10,2)
ну это же просто пример, хотел показать когда и фильтруем и преобразовываем.
Ох, из учебников для новичков это все убрали бы)
из С++ это пошло стр(инпут())
спасибо вам большое! реально просто не понимал почему это все пишут =) и главное когда спрашиваешь -молчат. Я уж думал это что-то из глубин нашей психологии, а оно вон как оказывается.
@@PythonRussian я не имел ввиду синтаксис, я имел ввиду как раз психологию) блоксхема рождённая в С++ она и тут работает)
@@PythonRussian во втором Пытхоне инпут пытался вычислить вводимое выражение. Там еще был рав_инпут , но это не то же самое, что стр(инпут())
@@warpingdrum3712 вы кажется правы, но это ж с каких старых туториалов значит код списывают
Спасибо