Частые ошибки начинающих питонистов

  Рет қаралды 8,750

Python Russian

Python Russian

3 жыл бұрын

В видео я показал те ошибки, которые попадаются мне наиболее часто у начинающих. Речь только о ошибках связанных с конструкциями языка, его синтаксисом, которые вижу регулярно.
PEP-8 www.python.org/dev/peps/pep-0...
стандартные функции docs.python.org/3.8/library/f...
Именование! Называем вещи своими именами, коллекции во множественном числе, функции -что делают
Всегда используем ф-строки, НИКОГДА не складываем строки
не делаем то, что происходит по-умолчанию (str(input))
используем листкомпс и генэксп только если есть преобразование И/ИЛИ фильтрация
лучше листкомпс, генэксп, чем map/filter
используем while True для вечных циклов
если список не нужен, используем генэксп
не используем range (len(list)), если нужен индекс то используем enumerate
используем if collection чтобы проверить что не пустая
используем встроенные функции
ловим конкретное исключение, пишем информацию в ветке except
В видео отражено мое мнение, у вас может быть противоположное
Присоединяйся к помощи каналу, будет интересно)
✔️Бусти boosty.to/python_russian/donate
✔️Юмани 410011506612886
Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
#Python #PythonRussian #PyCharm

Пікірлер: 67
@lichrave6805
@lichrave6805 2 ай бұрын
Многие ошибки прямо сейчас совершаю и учусь дальше их делать(обучают в онлайн школе програмирования). Спасибо за информацию, просто чудом попал на ваш канал.
@George-eb3bw
@George-eb3bw 2 жыл бұрын
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 замалчивание ошибки и неиспользование конкретного исключения
@Insidepointg
@Insidepointg Жыл бұрын
очень недооцененный контент, автор дает отличные знания и я вообще счастлив что наткнулся на его канал. Так качественно и понятно подавать знания это надо уметь, второй такой человек на мой взгляд это Тимофей Хирьянов
@PythonRussian
@PythonRussian Жыл бұрын
спасибо за отзыв. В ваших силах помочь - порекомендовать друзьям, поделиться в соцсетях
@IlyaIlya_lopkop
@IlyaIlya_lopkop 3 жыл бұрын
Супер-бомба, больше видео!
@Laserball74
@Laserball74 Жыл бұрын
молодец! Закинул себе в избранное 👌
@user-kw9gx6dd2x
@user-kw9gx6dd2x 2 жыл бұрын
Отличная подача материала, почерпнул новый фишки для себя. Лайк однозначно!
@barma1309
@barma1309 Жыл бұрын
спасибо за видосы!! Очень в книгах не хватает бест практикс разделов
@Pumba053
@Pumba053 3 жыл бұрын
Спасибо, отличный туториал!
@mm_dima
@mm_dima 6 ай бұрын
Насчёт лист компрехеншнс, делаю вообще так - [*range(10)]
@y18kotov
@y18kotov Жыл бұрын
Спасибо! очень поззнавательно.
@mrmedbedb1256
@mrmedbedb1256 2 жыл бұрын
По последнему пункту можно ещё так: try: int('a') except Exception as err: print(f'{err}, {err.args}') Если не знаешь, какие исключения выпадут, то таким образом их можно зафиксировать.
@artemlavrinovich9174
@artemlavrinovich9174 2 жыл бұрын
спасибо, очень полезно! про f строки у меня не было ясности, какой именно вариант использовать, сейчас понятно что просто пишем все на них
@PythonRussian
@PythonRussian 2 жыл бұрын
у меня есть отдельно видео по ф-строкам, посмотри тоже kzbin.info/www/bejne/rJO9hYmXqtGHms0
@user-do4nq3fr6t
@user-do4nq3fr6t 3 жыл бұрын
на форуме решений теперь умничаю, но конечно со ссылкой сюды
@user-do4nq3fr6t
@user-do4nq3fr6t 3 жыл бұрын
за 26:21 большое спасибо
@polunochNY
@polunochNY 3 жыл бұрын
ушла всё переписывать! :)
@frekbysib
@frekbysib 3 жыл бұрын
Нравится манера подачи материала, все последовательно и четко. Но "новичк*" всегда лишним кажется. Весь контент у вас основан на обучении и исправлении действий как для начинающих, так и отучении от устаревшего кодинга профессионала. Если опустить "встречал у новичков" на "встречал", то суть не изменится :-) Возможно говорю это не зря, так как являясь подписчиком канала буду буду лучше воспринимать подачу, как и другие.
@PythonRussian
@PythonRussian 3 жыл бұрын
ну тут логика простая -я рассказываю как раз о том, что часто вижу, в том числе при код-ревью или на форуме. Просто не хочу брать темы с потолка и подумал, что скажем новичок более внимательно отнесется к тому, что показано в видео, если слышит что это частая ошибка/проблема и его тоже может коснуться, чем просто "давайте поговорим о декораторах". Но и вашу точку зрения понимаю, постараюсь избавиться от этого. Полагаю что те, кто посмотрел хоть сколько то видео на канале уже поймут, что речь пойдет о каких то важных вещах, в которых ошибаются программисты.
@sinrew2073
@sinrew2073 3 жыл бұрын
Спасибо
@andrewpuchinin8547
@andrewpuchinin8547 Жыл бұрын
Хочется сказать про dict.get(key,None). Не знаю точно, откуда это пошло, но со своей стороны могу предположить, что это пишется как "напоминалка" другому программисту: мол, ты не забудь, что тут еще может быть None. Наверное, люди предполагают, что, если их get() вернет None, то другой человек может долго думать, а откуда этот None взялся. А так типа видно Но еще раз, я не анализировал столько много кода новичков, как вы, так что только допускаю
@user-dk3ms4yt7x
@user-dk3ms4yt7x Жыл бұрын
Гуглил что делать когда у меня из mongoDb не вернулся узел, как проверить на none да ещё и что бы не писать if. Так вот какая то из вверхних ссылок подсказала что есть get и именно с none. при чём не пример, при этом ссылки на документацию небыло и упоминания что он не нужен тоже. А так как это работает и не сильно было запарно то я так и написал.
@rpuropu
@rpuropu 3 жыл бұрын
блин, я вот вижу что твои ролики суперполезны... но освоить это всё сразу нереально)).. я просмотрю все твои видео и буду их по кругу гонять кжадый день перед сном и во время отдыха, чтобы пока практикую узнавать ситуации хотя бы.. ох
@PythonRussian
@PythonRussian 3 жыл бұрын
конечно не реально. Я хоть и автор но тоже советую идти постепенно, помни что многие вещи никак не понять если не прочувствовать написав код. То есть пишем много кода -это единственный способ научиться программировать! Ролики никуда не убегут =)
@user-do4nq3fr6t
@user-do4nq3fr6t 3 жыл бұрын
и вот этот list(map) постоянно я использую, ну теперь =) использовал =)
@user-dn8bb3ii9d
@user-dn8bb3ii9d 2 жыл бұрын
👍
@Nikola_Kreslo
@Nikola_Kreslo 3 жыл бұрын
Not bad, not bad
@bbty_4086
@bbty_4086 2 жыл бұрын
1:49 скажите пожалуйста какая клавиша раставила пробелы тут и где можно найти список таких полезностей.
@PythonRussian
@PythonRussian 2 жыл бұрын
вот тут посмотри kzbin.info/www/bejne/gJ7OlqNreseEh7s
@user-gp6vm4jc9p
@user-gp6vm4jc9p 2 жыл бұрын
А у меня в Python 3.10 не получается такого результата, как в вашем примере по правилу №5. У меня print((e ** 2 for e in range(10) if e % 2 == 0)) выводит: , а не [0, 4, 16, 36, 64]. Чтобы получить список нужно [ ] ставить. Это специфика данной версии Илия где-то ошибаюсь?
@PythonRussian
@PythonRussian 2 жыл бұрын
это вы где то ошибаетесь - с круглыми скобками это генэксп, что вам и пишет, если нужен результат, то или действительно формировать список или использовать распаковку в стиле print(*(e ** 2 for e in range(10) if e % 2 == 0)).
@user-gp6vm4jc9p
@user-gp6vm4jc9p 2 жыл бұрын
@@PythonRussian Понятно, спасибо. Я, собственно, так и думал. Просто я повторил запись, что была на экране (там звездочки не было после print: ...(*(e...) , и удивился, что такой вывод у вас дал именно результат, а не констатацию факта, что используется генэксп. :)). Еще раз спасибо за ролики! Они действительно очень понятны и, что тоже немаловажно, хорошим русским языком озвучены.
@user-do4nq3fr6t
@user-do4nq3fr6t 3 жыл бұрын
1 == 1, ыыыы =) прям как я
@SemyonKalyakulin
@SemyonKalyakulin Жыл бұрын
Так а в каких все же случаях map и filter будут понятнее?)
@PythonRussian
@PythonRussian Жыл бұрын
честно говоря, когда видео снимал , у меня был какой то хороший пример из практики наготове, но теперь не могу вспомнить контекст. Короче мап-фильтр хороши для тех кто пришел с других ЯП (где они есть), для любителей функциональной парадигмы, а также при работе с reduce и itertools (местами). Вот так еще можно написать кратко >>> from operator import add >>> map(add, list1, list2) Конечно можно сделать генэксп с zip, но уже не так кратко.
@SemyonKalyakulin
@SemyonKalyakulin Жыл бұрын
@@PythonRussian спасибо. Не знал, что map умеет работать с множеством iterable сразу))
@user-do4nq3fr6t
@user-do4nq3fr6t 3 жыл бұрын
Как вы относитесь к частому исползованию if : break ? Почему интересуюсь, потому что преподователь часто говорит что бы максимально избегать этой конструкции, но не объясняет толком почему, мол не понятно читающиму будет. А обратной связи с ним нэма, так как запись там...если честно, я как то подсел на этот break..., и потому задался вопросом у Вас
@PythonRussian
@PythonRussian 3 жыл бұрын
приведите пожалуйста пример, не совсем понимаю. Дело в том, что break это не пара для if, это оператор выхода из цикла. Видимо вы какие то условия проверяете в цикле. Если выложите какой-нибудь код на pastebin и ссылку сюда, то смогу сказать точнее. Пока вроде не вижу проблем
@user-do4nq3fr6t
@user-do4nq3fr6t 3 жыл бұрын
@@PythonRussian да да, в WHILE, что то я тупанул, не уточнив, а код как нибудь потом, а то чот я стесняюсь =)
@user-do4nq3fr6t
@user-do4nq3fr6t 3 жыл бұрын
@@PythonRussian pastebin.com/MEvikSWM
@PythonRussian
@PythonRussian 3 жыл бұрын
@@user-do4nq3fr6t я прошу прощения, мне почему то этот комментарий Ютуб не показал, потому не ответил, а сейчас уже не активна ссылка. Сможете еще раз выложить код?
@user-do4nq3fr6t
@user-do4nq3fr6t 3 жыл бұрын
@@PythonRussian страннол девки пляшут, я же выложил повторно, нет коммента, ютуб походу удалил....
@user-re1ri9jp3e
@user-re1ri9jp3e 2 жыл бұрын
В - внезапность
@PythonRussian
@PythonRussian 2 жыл бұрын
не уловил...
@user-re1ri9jp3e
@user-re1ri9jp3e 2 жыл бұрын
Не ожиданно услышать вот.
@kan4317
@kan4317 3 жыл бұрын
Конкотенация быстрее форматирования примерно в 3 раза А еще в блоке except лучше писать print(repr(e)) выведет еще и имя исключения
@PythonRussian
@PythonRussian 3 жыл бұрын
это вы как посчитали? с помощью timeit попробуйте конкатенацию трех строковых переменных, а потом формирование ф-строк с ними же. Форматирование быстрее. Плюс промежуточные объекты не создаются в памяти
@kan4317
@kan4317 3 жыл бұрын
@@PythonRussian только что попробовал. 10кк итераций с f-строками дают в среднем 2.3 сек Конкотенация тех же переменных 1.8 сек
@kan4317
@kan4317 3 жыл бұрын
Тройной прирост у меня получался без определения переменных, в тупую готовые строки
@PythonRussian
@PythonRussian 3 жыл бұрын
@@kan4317 у меня питон 3.8, ф-строки на 10 миллионах повторов в среднем формируются за 143 наносекунды, конкатенация переменных 181 наносекунда. Да разница невелика но уж точно не в 3 раза в пользу одного варианта и плюс ф-строки побыстрее, поудобнее и поправильнее.
@kan4317
@kan4317 3 жыл бұрын
@@PythonRussian каюсь, поставил в неравные условия, при конкотенации не добавлял пробелы
@sagenovalstybes706
@sagenovalstybes706 2 жыл бұрын
Не знаю, откудa Вы это взяли: e**2 for e in range(10) if e%2==0, но на питоне 3.5.3 уже работает range(0,10,2)
@PythonRussian
@PythonRussian 2 жыл бұрын
ну это же просто пример, хотел показать когда и фильтруем и преобразовываем.
@user-sq1fe3ku5m
@user-sq1fe3ku5m Жыл бұрын
недооцененный канал...а жаль...масса полезного...
@user-hw2yg2tt2u
@user-hw2yg2tt2u 8 ай бұрын
Ох, из учебников для новичков это все убрали бы)
@rpuropu
@rpuropu 3 жыл бұрын
из С++ это пошло стр(инпут())
@PythonRussian
@PythonRussian 3 жыл бұрын
спасибо вам большое! реально просто не понимал почему это все пишут =) и главное когда спрашиваешь -молчат. Я уж думал это что-то из глубин нашей психологии, а оно вон как оказывается.
@rpuropu
@rpuropu 3 жыл бұрын
@@PythonRussian я не имел ввиду синтаксис, я имел ввиду как раз психологию) блоксхема рождённая в С++ она и тут работает)
@warpingdrum3712
@warpingdrum3712 2 ай бұрын
@@PythonRussian во втором Пытхоне инпут пытался вычислить вводимое выражение. Там еще был рав_инпут , но это не то же самое, что стр(инпут())
@PythonRussian
@PythonRussian 2 ай бұрын
@@warpingdrum3712 вы кажется правы, но это ж с каких старых туториалов значит код списывают
@edgull_tlt
@edgull_tlt 3 жыл бұрын
Спасибо
Что за звери *args и **kwargs
38:02
Python Russian
Рет қаралды 7 М.
UFC 302 : Махачев VS Порье
02:54
Setanta Sports UFC
Рет қаралды 1,4 МЛН
Шокирующая Речь Выпускника 😳📽️@CarrolltonTexas
00:43
Глеб Рандалайнен
Рет қаралды 11 МЛН
小女孩把路人当成离世的妈妈,太感人了.#short #angel #clown
00:53
Эффект Карбонаро и бесконечное пиво
01:00
История одного вокалиста
Рет қаралды 6 МЛН
Первые шаги в ООП: класс, объект, self
1:00:45
Python Russian
Рет қаралды 31 М.
Основы Asyncio
53:25
Python Russian
Рет қаралды 11 М.
Конкурентность и параллельность
40:31
Python Russian
Рет қаралды 5 М.
Замыкания (Closures) в Python
30:54
Python Russian
Рет қаралды 14 М.
18 Цикл while Python
12:43
egoroff_channel
Рет қаралды 250 М.
UFC 302 : Махачев VS Порье
02:54
Setanta Sports UFC
Рет қаралды 1,4 МЛН