Contrast
< Back to Blog
Original link:

https://www.youtube.com/watch?v=R6wNKRrKX3k

2024-07-18 15:27:37

Эти ошибки совершает каждый новичок Python _ 11 Ошибок которые нужно исправить

video content Image generated by Wilowrid

В этом видео мы рассмотрим 11 ошибок которые допускают новички во время написания своего кода Это очень важные ошибки которые стоит убрать с вашего кода , потому что они вызывают огромное количество багов .

Всего лишь досмотрев данное видео до конца вы сможете сэкономить огромное количество времени , сделать ваш код более профессиональным и научитесь писать его более правильно .

Итак , первая ошибка это то , как вы называете свои переменные .

Ваши переменные должны быть всегда на английском языке и содержать такие же слова .

Часто в коде я замечаю , как кто-то использует русские слова , примерно как на экране .

В принципе это вам никто не запрещает делать , но согласитесь смотреть на такой код достаточно смешно .

Да , разработчик не может перевести обычные слова из русского в английский язык , это становится достаточно смешно и данный код выглядит вообще не профессионально .

Сразу же приходит ощущение , что его написал какой-то школьник Даже если эта программа достаточно сложная То есть это может быть какое-то ядро , либо же сложный сервер и так далее Но когда вы видите такие переменные , такие названия функций , это реально очень смешно , и вам нужно исправить эту ошибку .

video content Image generated by Wilowrid

Научитесь писать ваши переменные , а также названия функций , классов и так далее на английском языке .

Даже если вы не знаете английский язык , вы можете перевести это в переводчике и потом вставить это в код .

Это не занимает много времени , но ваш код выглядит намного лучше .

Вторая ошибка , когда используют очень много анонимных функций .

Да , анонимные функции достаточно хороши , они позволяют упростить множество кода .

Например , если у вас есть маленькая функция , вы можете сделать из нее анонимную функцию , а также можете встроить ее в другое значение , для того чтобы всего лишь одной строчкой сделать какие-то действия .

Но бывает и такое , когда анонимные функции используют очень часто .

То есть у вас даже , например , нет обычной функции , у вас практически каждая строчка кода это анонимная функция Лямбда .

Так тоже не стоит делать , нужно везде соблюдать баланс .

Если вы знаете какую-то технологию , например оператор Маржа , либо же другие операторы .

Вам не нужно теперь использовать данную технологию везде , потому что везде нужно соблюдать баланс .

То же касается и Лямбда .

Поэтому если у вас есть выражение , которое вы можете записать в одну строчку используйте Лямбда .

video content Image generated by Wilowrid

Если же это выражение становится достаточно сложным , то лучше всего создать обычную функцию , так как спустя некоторое время вам будет проще понять обычную функцию , чем функцию Лямбда .

Третья ошибка это не использовать TypeHinta и PEP8 .

В случае если вы используете какие-то сложные структуры , которые сами создаете , например у вас есть дата классы , либо же есть собственные классы , на которых есть определённые значения , либо же у вас есть функция , которая возвращает какое-то значение , например int , str и так далее .

Очень хорошо , если вы используете типизацию , то есть вы указываете какой тип принимает определенные переменные и также возвращается из вашей функции .

Тем самым сразу же можно будет понять из подсказок IDE , какой тип возвращается , вам не нужно будет всё это самому проверять , тем самым другие разработчики смогут проще ориентироваться в вашем коде .

Также аннотация используется и для обычных переменных .

Если у вас переменная принимает результат какой-то функции , эта функция возвращает какую-то сложную структуру с определенными данными , тем самым вам не нужно проверять результаты , вы можете сразу видеть это значение .

Wilowrid Advertisement
video content Image generated by Wilowrid

По поводу P8 , очень часто новички начинают писать свой код , не соблюдая отступы , даже между функциями у них нет никаких отступов , тоже самое касается и аргументов .

Многие начинают добавлять лишние отступы , либо же вообще их не ставят .

Это вообще не соответствует стандартам .

А эти стандарты придумали для того , чтобы ваш код было проще считать .

Даже вы сами спустя некоторое время после написания кода не сможете понять , что вы здесь написали , потому что ваш код будет похож на свалку , где есть множество различных значений , функций , вы все налепили друг на друга и вам очень сложно ориентироваться в таком коде .

Поэтому также очень важно соблюдать и PEP8 .

Четвертая ошибка это не комментировать свой код .

Многие не комментируют свой код и потом удивляются , почему они не могут понять свой проект .

Лично я , когда открываю свои проекты спустя долгое время , я спокойно понимаю , что там написано .

Да , иногда бывает нужно разобраться , но всё же это даётся относительно легко .

Многие же жалуются на то , что они могут понять свой проект , не могут прочитать код , что здесь полный мусор .

Конечно же здесь полный мусор , если вы не оставляли свои комментарии , не использовали PEP8 и так далее .

video content Image generated by Wilowrid

Комментарии вообще одна из важнейших составляющих вашего кода .

Если у вас есть какая-то функция , либо какой-то сложный класс , где вы понимаете , что в дальнейшем вы можете не понять данный код , то лучше написать комментарий .

Естественно , не нужно писать комментарий под каждую строчку кода , что переменная типа int принимает такое-то значение .

Это делает ваш код только более мусорным .

Но если код не очевидный , обязательно пишите комментарии .

Даже если ваш проект на 100 строчек кода , либо на 50 строчек кода , я вообще не вижу проблемы написать пару строчек комментариев , для того чтобы потом можно было легко понять , как это работает .

Пятая ошибка это когда хранят важные данные внутри самого кода , то есть когда вы внутри вашего кода ставите важные апи токены , различные логины , пароли , возможно даже данные для авторизации в соц сетях , если вы пишите какого то определенного бота , изначально кажется что здесь нет ничего плохого , это ведь ваш скрипт и никто не получит к нему доступ .

video content Image generated by Wilowrid

Но не забывайте так же такую вещь что вы можете случайно залить данные файлы на гитхаб либо же вас попросит кто то поделиться софтом , вы уже забыли о том , что у вас API токены , возможно какие-то пароли , вы даёте ему данный файл , он успешно забирает ваш токен , например с помощью которого вы управляете своим ботом в телеграмме , а бот телеграмма управляет каналом на 500 тысяч подписчиков и с помощью данного бота они например удаляют все посты , Как вам такое ?

Поэтому , если нужно хранить какие-то важные данные , используйте переменные окружения .

У нас на канале также есть об этом видео .

В итоге , если вы зальёте данные в софт на GitHub , они не получат эти данные , потому что не хранятся в переменной окружения системы .

То есть в окружении своей системы вы заранее создаёте эти переменные .

Если же программа работает в другой системе , данных переменных там нет , естественно , ваших данных там тоже нет .

Поэтому это намного безопаснее , чем записывать такие данные в код .

Следующая ошибка это когда вы не понимаете проблему в вашем коде , вы получаете определенные исключения и сразу же бежите на форму для того , чтобы написать вопрос .

Wilowrid Advertisement
video content Image generated by Wilowrid

То есть , когда вы даже не пытаетесь разобраться , даже не пытаетесь погуглить информацию , сразу бежите на стек Overflow , либо же на Telegram чаты , начинаете писать свой вопрос , прикладывать скрины видео и так далее , а у вас там ошибка просто элементарная .

То есть , например , вы создали переменную a , а в принте написали переменную b , и вам интерпретатор говорит , что такой переменной просто нет .

То есть это всё элементарно понять , даже если просто перевести эту ошибку .

Некоторые начинают бежать на форумы , задавать вопросы , потом смотрят на свой код и просто понимают , что они написали одну букву не так .

Либо же у них не установлен модуль , и им Python прям говорит , что у вас нет данного модуля , вам нужно его установить , то есть просто ввести pip install и название модуля , но они не могут найти решение данной проблемы и начинают писать другим разработчикам .

Поэтому нужно научиться искать информацию .

Более опытные программисты ищут заранее эту ошибку , потому что , как правило , эту ошибку уже решили за вас миллион раз .

Потому что новички думают , что их ошибка она уникальная и ни у кого данной ошибки не было и только они первые её получили .

video content Image generated by Wilowrid

Хотя до того , как вы получили данную ошибку , на неё ответили уже тысячу раз .

Даже если вы используете неизвестную библиотеку , либо же неизвестную технологию , все равно есть те люди , которые тоже ее используют , столкнулись с теми же ошибками и тоже нашли ответ , и написали все это на стек оверфлоу , поэтому нужно просто научиться искать информацию .

Итак , седьмая ошибка это попытки написать все с нуля .

Опять же , это может быть хорошей практикой .

Когда вы начинаете что-то изучать и пишите с нуля определённую технологию , это в принципе хорошо , потому что вы прокачиваете свои знания , прокачиваете знания в определённых технологиях , в определённых библиотеках и т .

Д .

Но есть и обратная сторона .

Это кстати свойственно только новичкам , потому что более продвинутые разработчики обычно не пишут всё с нуля .

И так в чем же у нас проблема ?

Что новички пытаются создать с нуля абсолютно все .

То есть они пытаются создать все протоколы , все чаты , все алгоритмы шифрования , алгоритмы хеширования , они думают , что именно их алгоритм хеширования будет лучший , что у них не будет коллизии , только в их алгоритме шифрования будет самая лучшая защита .

video content Image generated by Wilowrid

Они начинают смотреть в соц сети что у них реализована двухфакторка с 6 знаками а нужно 12 потому что по их мнению это не безопасно .

Хотя там всего 1-2 попытки .

И начинают создавать все функции подряд , какие-то алгоритмы , подписи и так далее .

Я не понимаю , что алгоритмы шифрования , к примеру , можно очень легко взломать , если это написали вы сами .

А другие алгоритмы шифрования , которые сейчас все применяют это очень хорошо протестированная технология , и многие пытаются её взломать , но не могут .

То есть для чего в данном случае изобретать велосипед ?

Это касается именно определённых технологий , и начинают с нуля изобретать свой веб-фреймворк , свой собственный веб-сервер .

В принципе , как для практики , это достаточно хорошо , потому что вы сможете понять определённые технологии , но изобретать всё с нуля я в принципе не вижу смысла .

Итак , восьмая ошибка , когда начинают создавать определённый проект , даже скорее всего сложный проект , не продумывают заранее его архитектуру .

То есть к примеру им нужно создать какой-то сложный сервер , который принимает 10 тыс клиентов , должен сохранять данные в виде аватарки , никнейма и так далее .

Wilowrid Advertisement
video content Image generated by Wilowrid

Должна быть возможность изменить определённые данные , возможно вам нужна определённая авторизация и прочее .

И они просто начинают писать данный проект .

То есть создают файл WePHR и начинают писать сервер .

Но в чём же здесь ошибка ?

А ошибка в том , что если вы не продумаете архитектуру , и у вас будет сложный проект , вы тысячу раз его потом будете переписывать .

Потому что изначально вы не знаете всех мелочей , когда у вас нет даже представления о том , как это будет работать , вы запишите сначала в одной структуре , потом вы поймёте , что это не работает , потому что если пользователь меняет данные , нужно что-то подключить , вы начнёте это всё менять , потом в определённый момент вы поймёте , что проект вообще полностью не так собран , вам нужно его удалить и написать всё сначала уже правильно .

Так вот если вы потратите хотя бы 15 минут , того чтобы продумать как это будет работать , либо же даже потратить несколько часов на то чтобы это продумать , как это будет всё сохраняться , в какую базу данных , почему именно база данных , а не например обычный JSON файл или ещё что то , какая именно база данных , тут тоже нужно понимать скорость и так далее .

video content Image generated by Wilowrid

Возможен также алгоритм шифрования , как вы будете безопасно передавать данные , которые вам передал клиент .

Это всё нужно заранее продумать для того , чтобы у вас не было потом проблем .

Когда у вас полная структура проекта , вы можете просто взять и начать её писать .

Итак , девятая ошибка очень смешная , когда у вас есть определённый список , любой итриумый объект , по которому можно пройти с циклом .

Так вот некоторые разработчики делают что-то подобное .

Они создают цикл , ставят ренч , потом вычисляют длину иттерируемого объекта , делают -1 для того чтобы не выйти за границы этого значения , потом обращаются к объекту и его индексу .

Так вот , в итерируемых объектах уже реализованы те методы , которые позволяют просто бежать по циклу .

То есть вы можете просто использовать цикл for без ranch , просто написать ваш итерируемый объект , например ваш список , и вы цикли , вы будете сразу же бежать по списку .

Очень смешная ошибка , но многим думаю поможет .

10 очень важная ошибка , когда вы делаете программы на 200+ строк в одном файле .

Возможно вам так удобнее , но это огромная ошибка которая может разрушить все ваши проекты .

video content Image generated by Wilowrid

Я сам помню как давно еще писал проекты в одном файле на 1000 и более строк .

Во первых по такому коду очень сложно ориентироваться , поэтому лучше сразу научитесь делать модульную структуру .

Разбейте вашу программу на отдельные маленькие компоненты , где каждый компонент выполняет свою определенную задачу , и не связан с другими компонентами .

Тогда вы сразу знаете вы в каком модуле что у вас лежит , какие там функции и так далее .

Если это модуль-сервер , то вы можете внутри него создать отдельные Python файлы .

Например , файл для создания защищённого соединения , файл для работы с базой данных , который будет после получения данных как-то взаимодействовать с базой , выдавать нужный вам ответ .

Ну и также файл для обработки сообщений .

Уметь писать такие программы это очень важно , потому что без модульной структуры создать нормальную программу , которую вы сможете легко поддерживать , расширять и так далее у вас просто не получится .

Если нужно видео , где я покажу как создать модульную структуру , давайте попробуем набрать 1000 лайков .

А также сделаю видео о том , как я делаю модульную структуру , когда я их распределяю на сущности и так далее .

Wilowrid Advertisement
video content Image generated by Wilowrid

И далее у нас идёт одиннадцатая ошибка это связывание много кода между собой когда он не может работать отдельно .

То есть когда внутри вашего кода выполняется сразу много разных действий и которые не реализованы в отдельных функциях .

Если вдруг на каком-то этапе будет ошибка , то не выполнится вообще никакой код .

Потому что код связан друг с другом и не может выполняться отдельно .

Такое же было у меня в том проекте , где я писал всё в одном файле .

Так вот у меня вызывалась функция , которая проверяла соответствие значений и потом из себя же другой код запускала .

Потом я получил ошибку .

У меня была функция на 200+ строк .

Я понял , что так делать нельзя , потому что я сидел в отладчике примерно 2 дня и вообще не мог понять , почему здесь ошибка .

И потом до меня дошло , что нужно разделять код на мелкие компоненты , которые не могут вызывать ошибки .

То есть у вас есть маленький компонент , который делает определенную задачу , и вы же его используете далее .

Примерно также реализовано и в Java .

Я смотрел Java код и очень сильно удивлялся , почему под маленький кусочек кода выделяют отдельный метод .

video content Image generated by Wilowrid

То есть у них даже для того , чтобы просто вернуть значение , выделяется отдельный метод .

Для того , чтобы просто загрузить картинку , выделяется также отдельный метод .

То есть для каждого действия , которое отличается как-то между собой , у них отдельный метод .

Я изначально это не мог понять , но потом понял , что так намного лучше , потому что маленькие компоненты очень легко расширять , они у вас вообще никогда не упадут , потому что там вообще не может произойти ошибка , это одна , две , три строчки кода .

Также представьте , что вы пишите код построчному , у вас есть только один файл и это ваша программа .

И в выданной программе у вас 10 000 строк кода .

Как думаете , где будет проще ориентироваться ?

В этом файле или в файле , где у вас под каждую задачу свой модуль .

В каждом модуле под каждое действие свой файл , внутри которого несколько функций , например на 10 строк кода .

Это сложно объяснить , но попытайтесь просто разделить вашу программу на компоненты .

Вам нужно записать или прочитать что-то из базы ?

Делайте две отдельные функции для этой цели .

Поместите в отдельный модуль , который будет служить чисто для обработки запросов базы , внутри которого уже будет данный функционал .

video content Image generated by Wilowrid

Во-первых , Вы не будете дублировать одинаковый код по 100 раз , и Вы сможете использовать его повторно , просто обращаясь к модулю .

Во-вторых , если у Вас будет ошибка , намного проще её исправить в одном месте и Вы одной функцией на 10-20 строк кода , чем по всей программе , где Вы продублировали данный код .

А представьте , что будет , если у вас всё это ещё и в одном файле .

Такие мелкие компоненты очень легко контролировать и программа практически не вызывает ошибок .

Чего нельзя сказать про огромный код , где ничего не разделяется на компоненты , где сразу идёт чтение с базы , проверка на запись в базу , потом ещё отправка отчёта и всё прямо в одном месте .

Если вы знаете другие ошибки новичков , не забывайте написать об этом в комментариях .

Также у нас было предыдущее видео , где также были ошибки новичков .

Вы также можете его посмотреть для того , чтобы ещё лучше прокачаться в данном плане .

Давайте попробуем набрать 1000 лайков под данным видео , это очень сильно мотивирует на создание новых видео .

И также если вы впервые на канале , то подписывайтесь , так как у нас очень много полезного контента по Python и другим технологиям .

Wilowrid Advertisement
Original video



Partnership

Attention YouTube vloggers and media companies!
Are you looking for a way to reach a wider audience and get more views on your videos?
Our innovative video to text transcribing service can help you do just that.
We provide accurate transcriptions of your videos along with visual content that will help you attract new viewers and keep them engaged. Plus, our data analytics and ad campaign tools can help you monetize your content and maximize your revenue.
Let's partner up and take your video content to the next level!
Contact us today to learn more.