📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Лучшие Проекты Для Начинающих Python-Разработчиков

PyLounge - программирование на Python и всё о IT17:45

Transcription

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

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

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

Затягивает вступление Макс. Озвучивает его Егор. Это канал PyLounge. Поехали!

Цель данного топа – это не создание самого оригинального портфолио и не перечисление уникальных проектов. Цель ролика разобраться в простых вещах, технологиях и темах, которые помогут развить практические навыки программирования.

Поэтому не стоит ждать здесь сборку Оптимуса Прайма, программирование Звезды смерти и создание двигателя на китовом жире. Мы пройдёмся по простым, но в то же время базовым вещам. Ведь как говорил один мой приятель: «Всё великое начинается с малого».

Как и твоя профессия python-разработчика может начаться со SkillFactory. Эту онлайн-школу я могу вам смело рекомендовать. Там упор в обучении идет именно на практику.

А это значит: 1) Вы делаете много проектов; 2) Добавляете их в свое портфолио; 3) И уже с этим портфолио идете трудоустраиваться. А карьерный центр SkillFactory вам в этом ещё и поможет.

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

Учеба длится 10 месяцев, но её можно подстроить под свое удобное время, и даже взять паузу в любой момент, например, на случай отпуска. Главное – вовремя выполнять задания.

Кстати, если вы захотите устроиться в крупную компанию, то обучение даст вам преимущество, потому что SkillFactory дает бонусные модули по теме асинхронного Python. В общем, SkillFactory – это классная школа, у которой высокие оценки от тех, кто уже прошел обучение.

Я всегда рекомендую Python как лучший язык для старта в программировании. С курсом SkillFactory «Профессия Python-разработчик» ты можешь в этом убедиться сам. Тем более сейчас стартует суперакция со скидкой аж 50% по промокоду «PyLounge».

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

Первый проект в списке – парсер сайтов. Это программа, которая просматривает код веб-сайта и получает оттуда какую-то информацию.

Предположим, есть сайт «Авито». Мы можем сделать программу, которая будет «как бы заходить» на Авито; просматривать объявления из раздела «Аренда квартир в Москве» (через программный код на страницах); и записывать в текстовый файл информацию из этих объявлений.

Пусть скрипт пишет в файл ссылку на объявление, контактный телефон, цену и описание. Затем этот файл сортируется по цене аренды, и на выходе мы сможем выбрать самые дешёвые квартиры.

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

В тренировочно-образовательных целях необходимо всё сделать максимально вручную, но без фанатизма. Поэтому используем модуль requests для работы с сетевыми запросами (для получения кода сайта, регистрации, авторизации).

Библиотека BeautifulSoup понадобится для разбора и выдергивания информации из HTML-кода сайта, который мы получили с помощью requests. Разработка парсера заставит разобраться с тем, что такое, зачем нужны и как работают сетевые протоколы HTTP/HTTPS.

Придётся выяснить, что такое HTTP-запрос – из чего он состоит; как работать с GET, POST, PUT, DELETE-запросами; чем они отличаются; как формировать заголовки запросов.

Предстоит покопаться со статус-кодами, URL-адресами, схемами авторизации, сессиями, редиректами, прокси и куки файлами. Параллельно познакомиться с форматом JSON и вникнуть в HTML/CSS-код, семантику и DOM-модель веб-страницы.

Работа с сетевыми протоколами – это фундаментальные computer science навыки, без которых называть себя полноценным программистом немного не справедливо.

Мне кажется, пример с квартирами на Авито идеально подходит для пробы пера. Поэтому попробуйте написать скрипт, который создаст файл с информацией о всех трехкомнатных квартирах, которые продают в твоем городе, по цене, скажем, дороже 3 000 000 рублей.

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

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

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

Однако прежде придётся разобраться, что такое API, вникнуть в понятие синхронности/асинхронности, потренировать понимание ООП, если сделать бота классом, а не просто набором функций.

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

Если бот как-то взаимодействует с файлами на компьютере, то придётся параллельно освоить и работу с файловой системой. В ходе разработки возникнут вопросы: как хранить в проекте секретные данные (токены, пароли), и как разделить бизнес логику приложения.

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

А это ценный практический опыт, который нам и нужен. Загрузка (то есть деплой) бота на хостинг по типу Heroku или Google App Engine – уже отдельная история, которая также прокачает твои технические навыки.

Если хочется сделать бота ВКонтакте, то смотрим в сторону библиотек vkwave и vkbottle. Они современные, асинхронные и простые в использовании. Синхронный и уже местами забагованный vk_api использовать не советую.

Для Telegram рекомендую полностью асинхронный Aiogram. В качестве альтернативы можно использовать модуль pytelegrambotapi. Он попроще и поддерживает как синхронный, так и асинхронный режим работы.

В случае с Discord ботами самым популярным является модуль discord.py (с 9 000 звёзд на GitHub). Он асинхронный, хорошо документирован и прост в освоении. По принципу использования и написания кода похож на Aiogram и vkwave.

Если разобраться, как работать с одной из перечисленных библиотек, то с другими проблем уже не возникнет. Этот принцип справедлив для многих модулей и фреймворков не только языка Python. Об этом я ещё скажу дальше.

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

Он записывает всё в Google-таблицу, БД или Excel-таблицу и ведёт какую-нибудь статистику. Можно сделать бота, который следит за ценами. Отправляешь ему ссылку на товар. Если на этот товар появляется скидка, бот присылает уведомление.

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

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

В качестве усложнения проекта можно добавить систему оплаты, скидочные промокоды, раздел с лидерами продаж, кеширование, отправку чека на почту или рекомендательную систему, основанную на in-memory СУБД Redis или вообще модели машинного обучения.

А если вы совсем без тормозов, то прикрутите REST API сайта. Для этого потребуется дополнительно вникнуть в вопросы сериализации JSON-объектов, работе с сетевыми протоколами и прочему.

Разработка веб-сайта познакомит вас с паттерном проектирования MVC (модуль-представление-контроллер), HTML/CSS и, возможно, JavaScript кодом.

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

Кроме того, он базируется на классическом, упомянутом ранее шаблоне MVC (правда, там он называется MVT, но не суть). Изучая Django, придётся научиться работать с маршрутизацией, моделями данных, миграциями, контроллерами, шаблонизаторами HTML и ORM (это специальная штука, которая позволяет работать с базой данных без SQL запросов, а через питоновские объекты).

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

Если вы разберётесь с Django, понять, как работает PHPшный Laravel, Javовый Spring или Ruby on Rails не составит труда. Django ORM практически идентичен Eloquent из Laravel, шаблонизаторы тоже плюс/минус у всех похожи, модели и миграции отличаются чисто косметически.

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

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

И едем дальше. Разработка приложений с графическим интерфейсом не является основной сферой применения Python. Однако это не значит, что GUI на нём не пишут совсем.

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

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

Разберетесь с компоновкой элементов (layout-ами), научитесь задействовать диалоговые окна для выбора файлов на компьютере и т.д. Такое, казалось бы, простое приложение позволяет проработать все основные возможности графических фреймворков.

Для графики рекомендую использовать фреймворк PyQt, а для работы с аудио библиотеку Pygame. PyQt – более фундаментальный и сложный графический фреймворк, чем tkinter или pysimplegui. Поэтому обратить внимание стоит именно на него.

Тут по аналогии с MVC веб-фреймворками. Разберись с базовыми принципами и дальше проблем не будет. Под базой здесь я подразумеваю концепцию событий (сигналов) и обработчиков событий (слотов).

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

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

Отмечу, что многие графические приложения основаны на шаблоне проектирования MVP (модель-представление-представитель). Это вариация шаблона MVC, на котором базируются веб-приложения.

Pygame – простая и популярная библиотека для работы с мультимедиа объектами. Позволяет работать с аудио, видеофайлами, а если в ней хорошо разобраться, можно и 2D игру сделать.

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

Анализ данных – гигантская область, в которую входит математика, computer science и программирование. Разбор всех этих тем выходит за рамки данного ролика и заслуживает отдельного цикла видео.

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

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

Оригинальностью проект не блещет. Но покопаться придётся. Это задача из сферы обработки естественного языка (Natural Language Processing или NLP). Для работы с NLP стоит обратить внимание на библиотеки: NLTK, TextBlob, spacy, Gensim и CoreNLP.

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

TextBlob – обёртка над NLTK, которая предоставляет простой интерфейс для этой библиотеки. Иногда ею просто удобнее пользоваться. spacy – модуль, который помогает решать спектр задач: от определения частей речи и выделения именованных сущностей до создания собственных моделей анализа.

Gensim – библиотека тематического моделирования. Позволяет обрабатывать тексты, работать с векторными моделями слов (например, Word2Vec или FastText) и создавать тематические модели текстов. CoreNLP – модуль для распознавания свойств текста.

Ссылки на документацию и все библиотеки из ролика я оставлю в описании. Пока далеко не ушли от кино. Вспомним одну из классических задач машинного обучения – разработку системы рекомендаций.

Рекомендательная система – это программа, которая будет угадывать предпочтения пользователя в плане выбора фильма. Для её написания придётся научиться работать с такими базовыми библиотеками для любого data scientist'а как Pandas, Numpy, Matplotlib и Scikit.

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

Кстати, у нас на канале есть уроки по каждой из этих библиотек. Следующий большой класс задач – компьютерное зрение. Не мудрствуя лукаво, создаём приложение, которое по фото или видео определяет наличие/отсутствие маски на лице человека.

Самая ходовая библиотека компьютерного зрения – это OpenCV. Её и предстоит изучать. Также стоит ознакомиться со сверточными нейронными сетями и концепцией deep learning в целом.

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

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

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

Но я в тебя верю! Господь тоже в тебя верит! Но на всякий случай, для подстраховки, он создал тебе в помощь Google. Не забывай про это.

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

И до встречи в следующем видео!