Прекрати писать код в ОДНОМ файле Python | ТОП 5 Ошибок и создание правильной архитектуры

preview_player
Показать описание

Что мы рассмотрим в этом видео:
- 5 ошибок, которые сделают Ваш проект хуже, если Вы пишите его в одном файле
- Примеры почему писать код в одном файле является плохой практикой
- Научимся распределять Python проект на пакеты
- Научимся импортировать функционал из разных компонентов и использовать его повторно
- Рассмотрим проект по защите Python программ и его структуру
- Спроектируем архитектуру проекта на примере чата

Тайм-коды:
0:00 - Что будет в видео?
0:45 - Ошибка #1 - как ориентироваться в таком коде?
1:25 - Ошибка #2 - о функциях и повторном использовании
2:39 - Ошибка #3 - почему надо разбивать программу на компоненты?
3:18 - Ошибка #4 - почему код выглядит плохо?
4:03 - Ошибка #5 - не стоит перебарщивать
4:51 - Топовые фишки о Python
5:03 - Начинаем рассматривать мой проект с модульной структурой
5:53 - Как разделять python программу на пакеты?
6:15 - Как устроены методы в пакете Client
6:49 - Структура пакета Server
7:08 - Стоит ли релизить этот проект?
7:25 - Ошибка в структуре проекта
7:36 - Хорошие примеры методов. Как писать методы правильно?
8:10 - Как использовать пакет в других компонентах?
9:04 - Почему такой подход лучше?
9:34 - Анализируем файл упаковщика (Немного о безопасности Python)
10:58 - Рассматриваем класс который изменяет свое поведение в рантайме
12:50 - Как определить сущности на примере чата?
14:00 - Как научиться импортировать всё это?
14:42 - Важный момент с импортами
16:30 - Как импортировать пакеты которые находятся на уровень выше?
16:55 - Не забывайте про обратную связь, это сильно мотивирует =)
Рекомендации по теме
Комментарии
Автор

Привет Zproger. я всё это время создавал иллюзию того что вас смотрят много людей. Это все был я.

uorqblg
Автор

не стоит в обучающее видео вставлять примеры с from <package_name> import *, это так себе практика)
импортируйте в файлы только то, что нужно, либо, в крайнем случае, используйте import <package_name> as <new_name>, так и путаницы меньше, и ошибок, и выглядит приятнее, и не приходится запоминать, какое имя каких функций/классов/переменных уже инициализировано в импортируемых пакетах

dreamer_ror
Автор

Твой проект по защите через запрос к серверу взломать ещё легче чем через распаковку .exe файла. Нужно просто через браузер отправить запрос на сервер (допустим через консоль JS отправить Fetch запрос) и получить ответ с исходным кодом функции. Так что лучше так не "защищать"))

kvrvgv
Автор

Спасибо, подобные видео очень помогают

lapppse
Автор

А если пришёл на php проект с легаси на 2000 строк кода +- 200 файлов? Суицид?

simon-druchinin
Автор

Дружище, респект ! Дай обниму ! Сделай ролик о структуре проекта и импортах, где центральной темой будет Абсолютный путь в ПРЕДЕЛАХ ЗОНЫ ВИДИМОСТИ. То есть не смотря на то, IDE подчеркивает как ошибку такой обрубленный абсолютный путь в контейнере всё работает ! и нет ошибки ModuleNotFoundError: В этом ролике это по таймингу в самом конце ( найти не просто, но в других источниках этой инфы просто нет) 15:30.

Закрепи комментарий - это важная информация !

qerfwon
Автор

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

По твоему коду с ходу увидел проблемы с ОЗУ. Сервер бесконечно спавнит потоки, но они у тебя никак не контролируются. По итогу если сервер будет долго работать/будет много клиентов - память перегрузится и программа упадет. Нужно создавать класс, передавать его кластер в функцию, и уже через эту функцию вызывать поток, добавляю handler потока в память класса, который спавнит эти потоки. В самом классе просто сделать демона, который в случае "not isAlive()" чистит поток методом del и удаляет его из списка запущенных.

riventarakoss
Автор

Можно защитить код просто скомпилив все модули в pyd с помощью cython и еще можно важные функции выполнять на серваке и через запросы получать результат выполнения

shakapaker
Автор

Как же давно я жду видео по подтягиваю кода с сервера по токену например. Готов проспонсировать канал, добавь пожалуйста такую функцию ♥ Закинул через данэйшен

wordpreslabs
Автор

Наконец то я понял как это делать! Спасибо большое

npbvbwo
Автор

Зашёл в Python на релизе 3.7. Зашёл на фокусе асинхронности, которой не хватало в предыдущем инструменте. Поскольку серверные приложения это по большей части I/O-bound, то вместо многопоточности, в 2022 году, когда уже скоро 3.11 выйдет, гораздо эффективнее, да и логичнее использовать именно asyncio, но какие бы видосы по Python не встречал, в подавляющем большинстве это поведение, как наиболее ожидаемое — не встречается. Парадокс.

Можете объяснить свою точку зрения, почему не переходите на новый уровень?

MrSunchezz
Автор

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

AliFUen
Автор

Я залип на игру на фоне и забыл о чем видео

zoreyan
Автор

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

dertfin
Автор

1. Оформление кода
2. Сделать функцию
3. Можно согласится
4. Возможно...

Coincollect
Автор

ох напомнило мне это как на одном проекте мне досталась программа в 1000 строк в одном файле, пришлось полностью все переписать

oleg_kishinskii
Автор

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

sergeysergey
Автор

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

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

ivanc
Автор

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

wvnjwzb
Автор

Всё очень круто объяснено. Но хотел бы спросить, для чего используются файлы __init__.py .
?

EdvardKenua