10 Ужасных ошибок которые совершают Python разработчики

  Переглядів 21,376

ZProger [ IT ]

ZProger [ IT ]

День тому

⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
⭐ Телеграм канал: t.me/+0S48JMG60OkwNGRh
В данном видео рассмотрим ошибки, которые совершают многие разработчики. Эти ошибки делают ваш проект сложнее, его будет трудно поддерживать и у вас будет уходить в разы больше времени, чтобы улучшить проект.
Эти 10 ошибок совершают как и новички, так и продвинутые разработчики, так как все могут ошибаться, и не все со временем исправляют эти ошибки в своем коде, но именно они могут в дальнейшем усложнить процесс разработки
📁 Github: github.com/Zproger
📁 Все плейлисты с уроками: bit.ly/39GaY89
📁 Связаться со мной: zproger777@gmail.com
📁 Поддержать канал: github.com/Zproger/donate
Тайм-коды:
0:00 - Почему это важно?
0:20 - Проблемы с форматированием кода, отсутствие единого стандарта
0:56 - Неправильное именование объектов
1:20 - Как решить проблемы с PEP8 работая в команде?
2:35 - Как flake8 решает эти проблемы?
3:14 - Эта ошибка заставит вас переписывать проект
4:41 - К чему приводит отсутствие тестирования
6:19 - Важная новость. Обновление курса ООП + Приват канал
7:49 - Универсальные функции убьют ваш проект
8:59 - Проблема с бэкапами кода и контрольными точками
9:55 - Как работает Git? Самый простой пример
10:20 - Как не стоит делать коммиты
11:00 - Почему не стоит усложнять свой код?
12:06 - К чему может привести слепое копирование кода?
13:06 - Какие ошибки были в вашей практике?

КОМЕНТАРІ: 75
@zproger
@zproger Рік тому
Какие ошибки из этого видео были у вас?
@m0Ray79
@m0Ray79 Рік тому
Есть нюансы с "непонятными коммитами". Например, у меня могут как из пулемёта лететь коммиты с комментом "Bugfix" или "Debug". А всё дело в том, что мой код компилируется (я использую Cython), а его компиляция и последующее тестирование происходит на отдельном сервере под управлением GitLab, Docker и Jenkins с целью обеспечения CI. И тогда все изменения приходится документировать в описании merge request гитлаба. Такие вот дела.
@Mr_AnKei
@Mr_AnKei Рік тому
Очень полезное видео я только, что понял как у меня ужас творится, но спасибо:)
@zproger
@zproger Рік тому
​@@m0Ray79 Ну тут проблема в том, что если вам нужно будет откатиться назад, вы не сможете понять где именно лежит нужный вам функционал, из всех коммитов с комментариями "bugfix"
@m0Ray79
@m0Ray79 Рік тому
@@zproger Конечно, на уровне git (который я и так презираю), откатиться не получится. Он переусложнён, но притом примитивен до полной неюзабельности. Зато я cмогу откатиться на уровне Merge Request в GitLab.
@migorpresents8991
@migorpresents8991 8 місяців тому
Я себя нашел на этом моменте 11:02
@AliF0Uen
@AliF0Uen Рік тому
С pycharm выучить pep8 не сложно) Я смотрел свои первые проекты, там справа область скорллбара вся серая😅
@zproger
@zproger Рік тому
Бывает =))
@snaps1k474
@snaps1k474 Рік тому
Посмотрел почти 14 минут воды. Какой смысл рассказывать про плагины и НЕ показывать их в работе? Тоже самое с фишками, о которых вы говорите: зачем нужен видеоряд с кодом, если работы с ним никакой не происходит? Про гит вообще молчу. Видео называется 10 УЖАСНЫХ ОШИБОК, а тут одна из них - рассказ про гит :))
@user-rr6ep1jp2i
@user-rr6ep1jp2i Рік тому
Да
@MagMigo
@MagMigo Рік тому
Я один учил pep8 по ошибкам от pycharm и том, как пишут многие люди? Например, я только недавно узнал, что по пепу, который именно у питона, который базовый, то вокруг чего-либо нужно два пробела variable = 123 i_love_bubbles = "hihi" def some_function(argument: str) -> str: return argument.split() Изначально я думал, что это нужно лишь у импортов и классов, типа import module class Aboba: ...
@enigma8290
@enigma8290 Рік тому
Приветствую, если в классе нужно получать и изменять приватные атрибуты, то в этом плане лучше использовать декоратор property? Благодарю за предоставленную пользу.
@zproger
@zproger Рік тому
Да, он будет проксировать все действия на указанный атрибут
@tima977
@tima977 Рік тому
Ура, видос! Спасибо за контент, у тебя очень полезные видео!
@zproger
@zproger Рік тому
Благодарю 😉
@TV-vg2ig
@TV-vg2ig Рік тому
капитан очевидность)
@zproger
@zproger Рік тому
Смотрите видео до конца)
@TV-vg2ig
@TV-vg2ig Рік тому
Посмотрел, не просто же так написал
@TV-vg2ig
@TV-vg2ig Рік тому
@@zproger про Git, серьёзно? Это все очевидно...
@zproger
@zproger Рік тому
Ну для меня это тоже очевидно, но ведь не стоит забывать что смотрят и новички в том числе, я делаю примеры отталкиваясь от статистики по прошлым видео
@TeslaDln
@TeslaDln Рік тому
@@zproger. Для него наличие новичков, представьте себе, не очевидно =) Видимо он сам когда-то был просто человеком, а потом резко стал программером, ими же так и становятся.
@user-ke1sx3yq4b
@user-ke1sx3yq4b 6 місяців тому
А где тип разработчиков, который в начале пишут тесты, а затем код? Недоработка, уважаемый. )
@super_man-ArtOfWar3
@super_man-ArtOfWar3 Рік тому
12:08 вот когда такое написал, главное - случайно не запустить ))))))))
@zproger
@zproger Рік тому
Согласен, но в данном случае даже если запустить, то ничего не произойдет, у редактора нет прав рута
@super_man-ArtOfWar3
@super_man-ArtOfWar3 Рік тому
@@zproger всеравно, опасные действия)
@tima977
@tima977 Рік тому
Автор, не знаю где ещё спросить, спрашиваю тут) Я работаю с PyQt5, там можно style sheet прямо в редакторе задавать, а можно как-то задавать его отдельно CSS файлом? Может знаешь какие-нибудь ресурсы, где есть инфа об этом, я обыскался уже, нигде не могу найти😅 Комментаторы, читающие мое сообщение, может вы знаете?)
@0x00AE1C9B
@0x00AE1C9B Рік тому
К виджетам применяется setStyleSheet, в который передаётся строка с CSS. Возможно ты хочешь отдельный CSS-файл, куда задаются все значения, но думаю для этого нужно писать отдельный небольшой парсер CSS.
@0x00AE1C9B
@0x00AE1C9B Рік тому
Есть пакет cssutils, возможно тебе это поможет. Я работал с PyQt, мне не приходилось задавать StyleSheet вне кода или Qt designer, но это вполне возможно. Могут возникнуть проблемы с resource, т.к. в PyQt resource файл нужно превращать в .py, в таком случае лучше перейти на PySide2
@HellakatsPlayhouse
@HellakatsPlayhouse Рік тому
зачастую в отдельном CSS-файле проку мало. Лучше сразу все настроить редакторе по ходу пьесы. А если вы хотите сделать подобие тем, то это несколько иначе делается, насколько я видел
@antioffz
@antioffz 11 місяців тому
Когда делают дохера файлов по 1 строчке в каждом...
@kutsokon
@kutsokon Рік тому
насколько я знаю в верблюжем (camel case) стиле первая буква первого слова маленькая, а первые буквы остальных слов большие. А это capitalize, когда каждая первая каждого слова с заглавной. camel case: testNameForExample capitalize: TestNameForExample Ну это так :)
@FOUREX_dot_py
@FOUREX_dot_py Рік тому
Может PascalCase camelCase snake_case
@zproger
@zproger Рік тому
ru.wikipedia.org/wiki/CamelCase
@kutsokon
@kutsokon Рік тому
@@zproger For clarity, this article calls the two alternatives upper camel case (initial uppercase letter, also known as Pascal case or bumpy case) and lower camel case (initial lowercase letter, also known as dromedary case). en.m.wikipedia.org/wiki/Camel_case Думаю все же Сергей прав
@zproger
@zproger Рік тому
Странно, во всех книгах пишут об этих верблюдах) Думаю надо у верблюда спросить, как более правильно писать в его стиле 😁
@MagMigo
@MagMigo Рік тому
@@FOUREX_dot_py Да camelCase, PascalCase, snake_case, kebab-case, UPPER_SNAKE_CASE. Ну вроде всё
@karmen5472
@karmen5472 Рік тому
А можно сделать в питоне такое вычисление с целыми числами. Мне нужно поделить определенную сумму (500) на определенное количество, пусть на 7 частей. Числа должны быть рандомными. т.е. например, должно получиться 7 чисел:: 57 36 154 94 52 41 180 их сумма не превышает 500. (57+36+154+94+52+41+180=500) То есть что мне нужно от приложения это генерил 7 рандомных чисел в пределе 500 и чтобы их сумма не превышала 500.
@mayonez5925
@mayonez5925 Рік тому
Можно всё.
@user-ke1sx3yq4b
@user-ke1sx3yq4b 6 місяців тому
Берем случайное число, не превышающее половины от желаемой суммы. Затем берем второе случайное, не превышающее желаемую сумму за исключением полученного ранее числа. Так циклично выбираем числа, пока не осталось выбрать последнее. Последнее число это желаемая сумма минус все полученные ранее числа.
@user-ke1sx3yq4b
@user-ke1sx3yq4b 6 місяців тому
from random import choice s = 500 n = 7 l = [] for i in range(n-1): l.append(choice(range((s-sum(l))//2))) l.append(s-sum(l))
@user-ke1sx3yq4b
@user-ke1sx3yq4b 6 місяців тому
Обратититься в "защищенным" свойствам класса вполне можно. И изменить их так же можно.
@oleg_kishinskii
@oleg_kishinskii Рік тому
с первого же момента, ну и когда же интересно был принят этот стандарт ? Может стоит вернуться к классике и писать по человечески, что бы было видно где у нас оператор а где значение?
@IvanIvanov-dh3sg
@IvanIvanov-dh3sg Рік тому
Респект автору за классное и полезное видео. Уважаемый автор, не могли бы вы поподробнее рассказать как безопасно использовать код с pipy через pip. Заранее спасибо)
@zproger
@zproger Рік тому
Благодарю, возможно напишу статью в телеграм канал либо приват
@archyt88
@archyt88 Рік тому
flake8 это костыль над костылем, проект должен быть в одном виде в одном стандарте писаться всеми разработчиками, а не так чтобы каждый в "своем" (как правило колхозном) стиле писал) есть pep8 на этом всё
@zproger
@zproger Рік тому
flake8 и решает эту проблему. Хотя мне конечно всегда хватало одного pep8 для любого проекта, но всё же я думаю неплохо знать о разных инструментах, он может пригодится в дальнейшем
@DmitryRomantsov
@DmitryRomantsov Рік тому
Ух. По пробелам рядом с = ... Привык. Всегда так пишу... ВСЕГДА. В том числе в скриптах. Вот только в шеллах это не вопрос стиля, а ошибка )
@zproger
@zproger Рік тому
=))
@serdar6318
@serdar6318 9 місяців тому
​@@artcom4307читабельность.
@codingjerk
@codingjerk Рік тому
Для тех кто смотрит это в 2к23-ем: вместо flake8 используйте ruff как линтер, а для форматирования - black
@programmist_survive
@programmist_survive Рік тому
большие словари я пишу в несколько строк, а мелкие в одну.. рип
@zproger
@zproger Рік тому
=(
@ivanosinin5050
@ivanosinin5050 Рік тому
4:41 Одно слово: TDD
@zproger
@zproger Рік тому
=)
@user-hi9vi6ys9r
@user-hi9vi6ys9r Рік тому
Как можно продавать курс за 8к+, рекламируя его в видео, в котором много оговорок, ошибок и т.д.? В котором намешано все в кучу. Отрезок про тестирование - это вообще что-то с чем-то. Видео писалось одним дублем, наскоряк, лишь бы впарить кому-то свой курс? Да и лендинг курса сделан явно на скорую руку - сокращения в тексте, куча бла-бла-бла. На гитхабе проекты не тянут на проекты, написанные по своим же рекомендациям из этого видео. Все те же ошибки, которые в этом видео выдаются за "ужасные". P.S. возможно вы хороший разработчик где-то там, на работе, не в гитхабе, и человек хороший, но если вы продаете курс, обещая в нем ну просто нереальные достижения, то нужно соответствовать уровню. А не вот это вот все! P.S.S. Всем добра!)
@zproger
@zproger Рік тому
Спасибо за конструктивную критику. Не знаю какие оговорки и ошибки вы нашли в этом видео и какие сокращения были в тексте лендинга, это для меня остается загадкой. Если вам не лень, можете поделиться. На счет гитхаба не спорю, код тех проектов ужасен, они писались на скорую руку, причем несколько лет назад, ещё до публикации их на гитхаб и ютуб, удалять их не вижу смысла, так как люди до сих пор используют этот код из старых видео. На счет того, что курс дает много полезных материалов, это факт. Сейчас я могу подтвердить это только на словах(так как недавно был релиз), но когда пройдут глобальные обновления и будут отзывы от участников, я смогу подтвердить и на реальных примерах.
@apglazkov
@apglazkov Рік тому
@@zproger ну, я могу накинуть "через вот такой вот разделитель" - забавно так про underscore 😏 Линтер не "позволяет более удобно форматировать ваш код", а указывает на ошибки. То, что вы озвучили, делает форматтер - тот же black или встроенный в IDE Про проектирование вообще без примеров "лист компрехейшнс" - интересное прочтение термина "list comprehension" 😏 "получает из сервера" - как будто прям изнутри достает 🙃 Про тестирование через print() я вообще молчу. Тут либо давайте про pytest и моки, либо про модуль logging хотя бы. А так совсем не промышленная, а кустарная разработка "Есть такие проекты, где гит не нужен: маленькие проекты, либо же где вы уверены, что всё будет нормально" - отличный критерий! Надёжный, б****, как швейцарские часы 😅 Согласно эффекту Даннинга-Крюгера, наиболее уверен именно наименее компетентный Про git ну хоть бы один пример правильно оформленного коммита Ну и говоря про современный Python, особенно ссылаясь на ООП, считаю, нельзя не упомянуть про тайп-хинты. Хоть в одном заготовленном примере бы - Возможно вы и правда очень хороший человек, но ваша лексика, примеры и их отсутствие в самых интересных местах, выдает в вас, в лучшем случае, начинающего мидла 😐 И откуда такая уверенность в себе? Эффект Даннинга-Крюгера? 😏
@zproger
@zproger Рік тому
@@apglazkov Спасибо за критику конечно. Но вам не кажется что это не мои ошибки, а вы просто решили придраться ко всему подряд? Если я сказал лист компрехейшнс, вместо лист компрехейшн, это делает из меня плохого разработчика?) 🙃 Многие моменты я специально объясняю просто, как для детей, чтобы как можно больше людей смогло понять. Я могу сказать underscore, могу каждую элементарную технологию рассматривать до уровня байтов и тянуть видео на 2 часа, но зачем все усложнять? Ну а на счет того что в видео не хватает некоторых моментов, это хороший пример, я стараюсь разделять примеры с кодом на несколько видео, которые идут не больше 15 минут, так как всё что больше 15м людям тяжело смотреть и переваривать. Я понимаю что некоторые хотят увидеть от меня сложные примеры, но не забывайте что разработчиков вашего уровня, которые смогут это понять, их единицы. Поэтому я даю такие примеры, чтобы могли понять как и новички, так и продвинутые разработчики. Видео на сложные темы просмотров не набирают, если от таких видео нет толку, то зачем тогда вообще мне их снимать? Именно поэтому делаю такие видео, которые будут смотреть, и которые будут понятны всем.
@apglazkov
@apglazkov Рік тому
@@zproger вы спросили, "какие оговорки", я ответил, - хоть и вместо автора комментария, с которым вполне согласен. Слух резануло с первых же минут, дальше - больше. Для полноценного ответа пересмотрел ролик, собрал детали, чтобы не быть голословным. Ну и да, "list comprehension" во втором прочтении тоже не удался 😏 А вообще, аккуратность и внимание к деталям - один из признаков мастерства Удачи ✊
@TheUsersChannel
@TheUsersChannel Рік тому
кэп
@zproger
@zproger Рік тому
0_0
@luispakvard5681
@luispakvard5681 Рік тому
Благодарю, ценная идея когда научусь писать модули буду вставлять код который ****ет данные юзера
@zproger
@zproger Рік тому
Это того не стоит =)
@fatcat5649
@fatcat5649 Рік тому
Поржал с "Даже если вы продвинутый разработчик/у вас много опыта вы допускаете какие-то ошибки". Да, упомянутая категория людей допускает ошибки, как и все, но эти ошибки далеко не того уровня, что в видео. Пилишь ты видео для новичков которые 15 минут назад узнали про питон - ладно. Зачем в названии упоминать Python разработчиков-то? Эти ошибки простительны только для тех кто начал изучать язык либо для ИНТЕРНОВ, но если ты разработчик и допускаешь такие ошибки, то ты 3.14здабол, а не разработчик
@damirasanov8993
@damirasanov8993 Рік тому
второй
@zproger
@zproger Рік тому
Я первый =)
@Pafel0684
@Pafel0684 Рік тому
Ты хочешь сказать что я не адекватный?
@zproger
@zproger Рік тому
Почему?)
@user-vb7hj9ec1m
@user-vb7hj9ec1m Рік тому
Чел, хватит говорить о том, о чем не показываешь
@zproger
@zproger Рік тому
Спасибо, исправлюсь в новых видео
@user-lm8cq8dn5h
@user-lm8cq8dn5h Рік тому
Название твоего канала как-то связано с политической ситуацией? Контент вроде не плохой, но иероглиф которым любят обозначать себя фашисты и сторонники насилия не дает мне со спокойной совестью подписаться на твой канал. Ты действительно теряешь много зрителей из-за этого символа, ведь это серьезная тема.
@zproger
@zproger Рік тому
Та какая политика, у меня канал о программировании, нику 3 года, так что это скорее у меня украли эти иероглифы, чем я. Есть полно проектов где буква Z в начале, в середине, в конце, это разве как-то относится к ситуации теперь? Не нужно выдумывать) Я вообще из Украины, да и не составляет труда посмотреть вкладку "о канале", где указывается страна, и также не составляет труда посмотреть историю канала через wayback machine и т.д,. Или вы думаете что я сидел с другим ником, а только ситуация эта наступила, я сразу побежал его менять что ли?) А вот менять ник, который индексировался на протяжении 3х лет, это равноценно тому, что просто удалить канал, и с другой стороны я поменяю ник на CProger к примеру, и завтра на танке напишут эту букву. И что мне опять идти менять ники? Я думаю не стоит так всё серьезно воспринимать.
Мало кто знает об этих PYTHON фишках
13:51
ZProger [ IT ]
Переглядів 14 тис.
Как избавиться от циклов импорта в Python
13:09
LIVE - Парад Победы в Москве. 9 Мая 2024
2:27:56
AKIpress news
Переглядів 2,2 млн
didn't want to let me in #tiktok
00:20
Анастасия Тарасова
Переглядів 6 млн
skibidi toilet 73 (part 2)
04:15
DaFuq!?Boom!
Переглядів 31 млн
ТОП 6 фишек PYTHON которые сделают вас лучше
15:34
Как выучить Python БЫСТРО используя ChatGPT?
10:10
ZProger [ IT ]
Переглядів 336 тис.
ПАРСИНГ КОМПАНИЙ В 2GIS | Как написать парсер на selenium (Python)
9:02
Артём Ипатов - Python на практике
Переглядів 3,9 тис.
Какие программисты востребованы на фрилансе?
8:40
Миша Ларченко
Переглядів 26 тис.
Вы должны знать эти 5 инструментов PYTHON
7:21