Python Basics Course

Программа курса

⚠️ Предупреждаю!

  • Темы перечислены не в хронологическом порядке.
  • Некоторые темы пропущенны или описаны не полностью.
  • Какие-то задания еще только предстоит придумать.

Язык программирования Python

  • Поговорить про языки программирования
  • Синтаксис языка
  • Операторы и основные инструкции
    • Генераторы списков и словарей
  • Функции в деталях
  • Базовые типы в языке
  • Функциональное программирование в Python
    • Функции высшего порядка
    • [Практика] - ???
  • Классы
    • Создание классов
    • Парадигма ООП
      • [Практика] Описание "фермы" с персонажами
  • Модули и пакеты
  • Итераторы и генераторы
    • [Практика] Генератор случайных 'ФИО'
  • Работа с исключениями
  • Менеджеры контекста
    • [Практика] Написание менеджера контекста предоставляющего доступ к файлу (самостоятельная реализация)
  • Декораторы
    • [Практика] Написание декоратора замеряющего время исполнения функций
    • [Практика] Декоратор memo/cache

Стандартная библиотека языка Python

  • Модуль os
  • Модуль os.path
  • Модуль io
    • [Практика] Обход дерева папок и вывод их в консоль
    • [Практика] Создание генератора файлов определенного размера
  • Модуль json
    • [Практика] Запросы к API и агрегация информации из API (Какое именно API - не принципиально)
  • Модуль time
  • Модуль datetime
  • Модуль random
  • Модуль re
    • [Практика] Парсинг Open Graph разметки сайта по урлу

Конкурентное программирование

  • Модуль threading
  • Модуль multiprocessing

Разработка HTTP сервера

  • Простой пример на сокетах
  • Простой парсинг тела HTTP запроса
  • Роутинг запросов по регулярным выражениям
  • Параллельная обработка запросов

Разработка Web-приложений на Flask

  • Основы Flask
  • Вывод данных в шаблон и возврат HTML страниц пользователю
  • [Практика] Написание простого сайта с несколькими статическими страницами
  • Авторизация пользователя используя сессии
  • Взаимодействие с базой данных через написание SQL запросов
  • Получение POST запросов от пользователей и создание записей в DB
  • [Практика] Написание блога с "админкой"

Разработка Web-приложений на Django

TODO: Перечислить темы

Дополнительные темы

  • Основы работы с интерпретатором команд Bash
  • Git
  • Протокол TCP и протокол HTTP
  • Паттерны ООП
  • Работа с базами данных и язык запросов SQL
  • SOLID принципы
  • Type hints и модуль typing
  • Что такое REST API
  • Дебагинг python приложений

Практические задания не привязанные к какой-то теме

  • [Практика] Написание сервиса для сжатия ссылок

    Сервис повторяющий логику: https://kutt.it/

  • [Практика] Написание бота, для сообщения в чат об обновлениях в Knowledge Base(Наш сайт)

    Бот должен будет сообщать в какой именно статье произошли изменения и только в том случае если статься добавлена в меню

  • [Практика] Консольная утилита сжимающая изображение до размера умещающегося в указанные рамки

    CLI утилита должна будет получить 3 параметра:

    • путь до файла
    • максимальную ширину
    • максимальную высоту

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

  • [Практика] Написать markdown-renderer сервис.

    Сайт должен состоять из одной страницы, разделенной на две части:

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

    При наборе текста в левой части осуществляется POST запрос на сервер в теле которого находится Markdown в ответ мы уже должны получать HTML который будет просто подставлен в правую часть

    Превью: