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

  Рет қаралды 21,492

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 11 ай бұрын
Я себя нашел на этом моменте 11:02
@AliF0Uen
@AliF0Uen Жыл бұрын
С pycharm выучить pep8 не сложно) Я смотрел свои первые проекты, там справа область скорллбара вся серая😅
@zproger
@zproger Жыл бұрын
Бывает =))
@tima977
@tima977 Жыл бұрын
Ура, видос! Спасибо за контент, у тебя очень полезные видео!
@zproger
@zproger Жыл бұрын
Благодарю 😉
@MagMigo
@MagMigo Жыл бұрын
Я один учил pep8 по ошибкам от pycharm и том, как пишут многие люди? Например, я только недавно узнал, что по пепу, который именно у питона, который базовый, то вокруг чего-либо нужно два пробела variable = 123 i_love_bubbles = "hihi" def some_function(argument: str) -> str: return argument.split() Изначально я думал, что это нужно лишь у импортов и классов, типа import module class Aboba: ...
@TV-vg2ig
@TV-vg2ig Жыл бұрын
капитан очевидность)
@zproger
@zproger Жыл бұрын
Смотрите видео до конца)
@TV-vg2ig
@TV-vg2ig Жыл бұрын
Посмотрел, не просто же так написал
@TV-vg2ig
@TV-vg2ig Жыл бұрын
@@zproger про Git, серьёзно? Это все очевидно...
@zproger
@zproger Жыл бұрын
Ну для меня это тоже очевидно, но ведь не стоит забывать что смотрят и новички в том числе, я делаю примеры отталкиваясь от статистики по прошлым видео
@TeslaDln
@TeslaDln Жыл бұрын
@@zproger. Для него наличие новичков, представьте себе, не очевидно =) Видимо он сам когда-то был просто человеком, а потом резко стал программером, ими же так и становятся.
@snaps1k474
@snaps1k474 Жыл бұрын
Посмотрел почти 14 минут воды. Какой смысл рассказывать про плагины и НЕ показывать их в работе? Тоже самое с фишками, о которых вы говорите: зачем нужен видеоряд с кодом, если работы с ним никакой не происходит? Про гит вообще молчу. Видео называется 10 УЖАСНЫХ ОШИБОК, а тут одна из них - рассказ про гит :))
@неКирилл
@неКирилл Жыл бұрын
Да
@enigma8290
@enigma8290 Жыл бұрын
Приветствую, если в классе нужно получать и изменять приватные атрибуты, то в этом плане лучше использовать декоратор property? Благодарю за предоставленную пользу.
@zproger
@zproger Жыл бұрын
Да, он будет проксировать все действия на указанный атрибут
@user-ke1sx3yq4b
@user-ke1sx3yq4b 8 ай бұрын
А где тип разработчиков, который в начале пишут тесты, а затем код? Недоработка, уважаемый. )
@super_man-ArtOfWar3
@super_man-ArtOfWar3 Жыл бұрын
12:08 вот когда такое написал, главное - случайно не запустить ))))))))
@zproger
@zproger Жыл бұрын
Согласен, но в данном случае даже если запустить, то ничего не произойдет, у редактора нет прав рута
@super_man-ArtOfWar3
@super_man-ArtOfWar3 Жыл бұрын
@@zproger всеравно, опасные действия)
@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. Ну вроде всё
@codingjerk
@codingjerk Жыл бұрын
Для тех кто смотрит это в 2к23-ем: вместо flake8 используйте ruff как линтер, а для форматирования - black
@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 Жыл бұрын
Когда делают дохера файлов по 1 строчке в каждом...
@archyt88
@archyt88 Жыл бұрын
flake8 это костыль над костылем, проект должен быть в одном виде в одном стандарте писаться всеми разработчиками, а не так чтобы каждый в "своем" (как правило колхозном) стиле писал) есть pep8 на этом всё
@zproger
@zproger Жыл бұрын
flake8 и решает эту проблему. Хотя мне конечно всегда хватало одного pep8 для любого проекта, но всё же я думаю неплохо знать о разных инструментах, он может пригодится в дальнейшем
@programmist_survive
@programmist_survive Жыл бұрын
большие словари я пишу в несколько строк, а мелкие в одну.. рип
@zproger
@zproger Жыл бұрын
=(
@IvanIvanov-dh3sg
@IvanIvanov-dh3sg Жыл бұрын
Респект автору за классное и полезное видео. Уважаемый автор, не могли бы вы поподробнее рассказать как безопасно использовать код с pipy через pip. Заранее спасибо)
@zproger
@zproger Жыл бұрын
Благодарю, возможно напишу статью в телеграм канал либо приват
@user-ke1sx3yq4b
@user-ke1sx3yq4b 8 ай бұрын
Обратититься в "защищенным" свойствам класса вполне можно. И изменить их так же можно.
@vunemesis
@vunemesis Жыл бұрын
Как можно продавать курс за 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" во втором прочтении тоже не удался 😏 А вообще, аккуратность и внимание к деталям - один из признаков мастерства Удачи ✊
@DmitryRomantsov
@DmitryRomantsov Жыл бұрын
Ух. По пробелам рядом с = ... Привык. Всегда так пишу... ВСЕГДА. В том числе в скриптах. Вот только в шеллах это не вопрос стиля, а ошибка )
@zproger
@zproger Жыл бұрын
=))
@serdar6318
@serdar6318 Жыл бұрын
​@artcom4307читабельность.
@oleg_kishinskii
@oleg_kishinskii Жыл бұрын
с первого же момента, ну и когда же интересно был принят этот стандарт ? Может стоит вернуться к классике и писать по человечески, что бы было видно где у нас оператор а где значение?
@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 8 ай бұрын
Берем случайное число, не превышающее половины от желаемой суммы. Затем берем второе случайное, не превышающее желаемую сумму за исключением полученного ранее числа. Так циклично выбираем числа, пока не осталось выбрать последнее. Последнее число это желаемая сумма минус все полученные ранее числа.
@user-ke1sx3yq4b
@user-ke1sx3yq4b 8 ай бұрын
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))
@ivanosinin5050
@ivanosinin5050 Жыл бұрын
4:41 Одно слово: TDD
@zproger
@zproger Жыл бұрын
=)
@luispakvard5681
@luispakvard5681 Жыл бұрын
Благодарю, ценная идея когда научусь писать модули буду вставлять код который ****ет данные юзера
@zproger
@zproger Жыл бұрын
Это того не стоит =)
@TheUsersChannel
@TheUsersChannel Жыл бұрын
кэп
@zproger
@zproger Жыл бұрын
0_0
@damirasanov8993
@damirasanov8993 Жыл бұрын
второй
@zproger
@zproger Жыл бұрын
Я первый =)
@Pafel0684
@Pafel0684 Жыл бұрын
Ты хочешь сказать что я не адекватный?
@zproger
@zproger Жыл бұрын
Почему?)
@fatcat5649
@fatcat5649 Жыл бұрын
Поржал с "Даже если вы продвинутый разработчик/у вас много опыта вы допускаете какие-то ошибки". Да, упомянутая категория людей допускает ошибки, как и все, но эти ошибки далеко не того уровня, что в видео. Пилишь ты видео для новичков которые 15 минут назад узнали про питон - ладно. Зачем в названии упоминать Python разработчиков-то? Эти ошибки простительны только для тех кто начал изучать язык либо для ИНТЕРНОВ, но если ты разработчик и допускаешь такие ошибки, то ты 3.14здабол, а не разработчик
@user-vb7hj9ec1m
@user-vb7hj9ec1m Жыл бұрын
Чел, хватит говорить о том, о чем не показываешь
@zproger
@zproger Жыл бұрын
Спасибо, исправлюсь в новых видео
@user-lm8cq8dn5h
@user-lm8cq8dn5h Жыл бұрын
Название твоего канала как-то связано с политической ситуацией? Контент вроде не плохой, но иероглиф которым любят обозначать себя фашисты и сторонники насилия не дает мне со спокойной совестью подписаться на твой канал. Ты действительно теряешь много зрителей из-за этого символа, ведь это серьезная тема.
@zproger
@zproger Жыл бұрын
Та какая политика, у меня канал о программировании, нику 3 года, так что это скорее у меня украли эти иероглифы, чем я. Есть полно проектов где буква Z в начале, в середине, в конце, это разве как-то относится к ситуации теперь? Не нужно выдумывать) Я вообще из Украины, да и не составляет труда посмотреть вкладку "о канале", где указывается страна, и также не составляет труда посмотреть историю канала через wayback machine и т.д,. Или вы думаете что я сидел с другим ником, а только ситуация эта наступила, я сразу побежал его менять что ли?) А вот менять ник, который индексировался на протяжении 3х лет, это равноценно тому, что просто удалить канал, и с другой стороны я поменяю ник на CProger к примеру, и завтра на танке напишут эту букву. И что мне опять идти менять ники? Я думаю не стоит так всё серьезно воспринимать.
Мало кто знает об этих PYTHON фишках
13:51
ZProger [ IT ]
Рет қаралды 14 М.
Despicable Me Fart Blaster
00:51
_vector_
Рет қаралды 26 МЛН
НРАВИТСЯ ЭТОТ ФОРМАТ??
00:37
МЯТНАЯ ФАНТА
Рет қаралды 6 МЛН
__new__ или __init__ в Python? Знаете ли вы это..
12:37
РОССИЙСКИЕ LINUX: Топ 3 и кому нужны?
6:23
ТОП 5 Ошибок в написании функций Python
12:46
Despicable Me Fart Blaster
00:51
_vector_
Рет қаралды 26 МЛН