← Назад к курсу

Обзор 30 ключевых библиотек Python

1. Веб-разработка и API

Django - полнофункциональный веб-фреймворк

Возможности: ORM, панель администратора, аутентификация, шаблонизация
Применение: Корпоративные приложения, CMS, социальные сети

# views.py
from django.http import HttpResponse
from django.shortcuts import render

def hello_view(request):
    return HttpResponse("Привет, Django!")

Flask - микрофреймворк для веб-приложений

Возможности: Маршрутизация, шаблоны Jinja2, расширяемая архитектура
Применение: REST API, микросервисы, простые веб-приложения

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return 'Hello Flask!'

if __name__ == '__main__':
    app.run(debug=True)

FastAPI - современный фреймворк для API

Возможности: Автоматическая документация, валидация данных, асинхронность
Применение: Высоконагруженные API, микросервисы

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

@app.post("/items/")
def create_item(item: Item):
    return {"item": item}

2. Работа с данными и анализ

Pandas - анализ и обработка данных

Возможности: DataFrame, чтение/запись CSV/Excel, группировка, фильтрация
Применение: Data Science, аналитика, ETL-процессы

import pandas as pd

# Чтение и анализ данных
df = pd.read_csv('data.csv')
print(df.head())
print(df.describe())
df_filtered = df[df['age'] > 25]

NumPy - научные вычисления

Возможности: Многомерные массивы, математические функции, линейная алгебра
Применение: Машинное обучение, научные расчеты, обработка сигналов

import numpy as np

# Операции с массивами
arr = np.array([[1, 2], [3, 4]])
print(arr * 2)
print(np.mean(arr))

SQLAlchemy - ORM для работы с базами данных

Возможности: Поддержка SQL, миграции, отношения между моделями
Применение: Веб-приложения, работа с различными СУБД

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)

# Создание сессии
engine = create_engine('sqlite:///db.sqlite3')
Session = sessionmaker(bind=engine)
session = Session()

3. Машинное обучение и ИИ

Scikit-learn - классическое машинное обучение

Возможности: Классификация, регрессия, кластеризация, предобработка
Применение: Прогнозирование, рекомендательные системы, анализ данных

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# Обучение модели
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = RandomForestClassifier()
model.fit(X_train, y_train)
predictions = model.predict(X_test)

TensorFlow/Keras - глубокое обучение

Возможности: Нейронные сети, компьютерное зрение, NLP
Применение: Распознавание образов, генерация текста, автономные системы

import tensorflow as tf
from tensorflow import keras

# Простая нейронная сеть
model = keras.Sequential([
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='categorical_crossentropy')

PyTorch - фреймворк глубокого обучения

Возможности: Динамические графы вычислений, GPU-ускорение
Применение: Исследования в области ИИ, компьютерное зрение

import torch
import torch.nn as nn

# Определение модели
class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(10, 5)
    
    def forward(self, x):
        return self.fc(x)

OpenAI API - работа с GPT-моделями

Возможности: Генерация текста, чат-боты, анализ контента
Применение: Чат-приложения, автоматизация контента, аналитика

from openai import OpenAI

client = OpenAI(api_key="your-api-key")

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "Привет!"}]
)
print(response.choices[0].message.content)

4. Визуализация данных

Matplotlib - построение графиков

Возможности: Линейные, столбчатые, круговые диаграммы, гистограммы
Применение: Научная визуализация, отчеты, дашборды

import matplotlib.pyplot as plt

plt.plot([1, 2, 3], [4, 5, 1])
plt.title('Мой график')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

Seaborn - статистическая визуализация

Возможности: Heatmaps, pair plots, распределения
Применение: Анализ данных, исследовательский анализ

import seaborn as sns
import pandas as pd

df = pd.read_csv('data.csv')
sns.pairplot(df, hue='category')

Plotly - интерактивная визуализация

Возможности: 3D-графики, интерактивность, веб-приложения
Применение: Дашборды, веб-аналитика

import plotly.express as px

fig = px.scatter(df, x='age', y='salary', color='department')
fig.show()

5. Асинхронное программирование

Asyncio - асинхронный фреймворк

Возможности: Асинхронные функции, задачи, очереди
Применение: Высоконагруженные приложения, сетевые программы

import asyncio

async def fetch_data():
    await asyncio.sleep(1)
    return "Данные"

async def main():
    result = await fetch_data()
    print(result)

asyncio.run(main())

Celery - распределенная очередь задач

Возможности: Фоновые задачи, периодические задания, масштабирование
Применение: Обработка фоновых задач, отправка email, обработка файлов

from celery import Celery

app = Celery('tasks', broker='redis://localhost')

@app.task
def process_data(data):
    # Длительная обработка
    return processed_data

6. Тестирование

Pytest - фреймворк для тестирования

Возможности: Фикстуры, параметризация, плагины
Применение: Модульное и интеграционное тестирование

# test_example.py
def test_addition():
    assert 1 + 1 == 2

def test_list():
    assert [1, 2, 3] == [1, 2, 3]

Unittest - встроенный фреймворк тестирования

Возможности: Классы тестов, setUp/tearDown, mock-объекты
Применение: Стандартное тестирование приложений

import unittest

class TestMath(unittest.TestCase):
    def test_add(self):
        self.assertEqual(1 + 1, 2)

7. Веб-скрапинг и парсинг

BeautifulSoup - парсинг HTML/XML

Возможности: Навигация по DOM, поиск элементов, извлечение данных
Применение: Веб-скрапинг, сбор данных

from bs4 import BeautifulSoup
import requests

html = requests.get('http://example.com').text
soup = BeautifulSoup(html, 'html.parser')
titles = soup.find_all('h1')

Scrapy - фреймворк для веб-скрапинга

Возможности: Пауки, конвейеры, экспорт данных
Применение: Промышленный скрапинг, сбор больших объемов данных

import scrapy

class BlogSpider(scrapy.Spider):
    name = 'blogspider'
    
    def start_requests(self):
        urls = ['http://blog.com']
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)
    
    def parse(self, response):
        for title in response.css('h2'):
            yield {'title': title.css('::text').get()}

8. Работа с файлами и форматами

Pillow - обработка изображений

Возможности: Изменение размера, фильтры, форматы изображений
Применение: Веб-приложения, обработка фото, компьютерное зрение

from PIL import Image

img = Image.open('photo.jpg')
img.thumbnail((100, 100))
img.save('thumb.jpg')

Openpyxl - работа с Excel

Возможности: Чтение/запись XLSX, форматирование, формулы
Применение: Офисная автоматизация, отчеты

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws['A1'] = 'Привет'
wb.save('report.xlsx')

PyPDF2 - работа с PDF

Возможности: Объединение, разделение, извлечение текста
Применение: Обработка документов, автоматизация

from PyPDF2 import PdfReader

reader = PdfReader("document.pdf")
text = reader.pages[0].extract_text()

9. Сетевые приложения и API

Requests - HTTP-запросы

Возможности: GET/POST запросы, сессии, cookies
Применение: Работа с внешними API, веб-скрапинг

import requests

response = requests.get('https://api.github.com')
data = response.json()

Websockets - двусторонняя связь в реальном времени

Возможности: WebSocket сервер/клиент, асинхронная работа
Применение: Чат-приложения, онлайн-игры, реальное время

import websockets
import asyncio

async def handler(websocket):
    async for message in websocket:
        await websocket.send(f"Получено: {message}")

10. Автоматизация и DevOps

Fabric - автоматизация развертывания

Возможности: Удаленное выполнение команд, деплоймент
Применение: Автоматизация серверов, CI/CD

from fabric import Connection

def deploy():
    c = Connection('server.com')
    c.run('git pull origin main')
    c.sudo('systemctl restart myapp')

Docker SDK - работа с Docker

Возможности: Управление контейнерами, образами, сетями
Применение: Автоматизация Docker, CI/CD пайплайны

import docker

client = docker.from_env()
client.containers.run('ubuntu', 'echo hello world')

11. GUI-приложения

Tkinter - встроенный GUI-фреймворк

Возможности: Окна, виджеты, события
Применение: Десктопные приложения, утилиты

import tkinter as tk

window = tk.Tk()
label = tk.Label(window, text="Привет!")
label.pack()
window.mainloop()

PyQt/PySide - продвинутые GUI

Возможности: Современный интерфейс, Qt Designer
Применение: Кроссплатформенные приложения, профессиональный софт

from PyQt5.QtWidgets import QApplication, QLabel

app = QApplication([])
label = QLabel('Hello PyQt')
label.show()
app.exec_()

12. Специализированные библиотеки

aiogram - Telegram боты

Возможности: FSM, middleware, inline-клавиатуры
Применение: Telegram боты, автоматизация

from aiogram import Bot, Dispatcher, types

bot = Bot(token="TOKEN")
dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])
async def start_cmd(message: types.Message):
    await message.answer("Привет!")

Django REST Framework - API для Django

Возможности: Сериализаторы, viewsets, аутентификация
Применение: REST API на Django

from rest_framework import serializers, viewsets

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['id', 'username']

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

Streamlit - дашборды и ML-приложения

Возможности: Интерактивные виджеты, автоматическое обновление
Применение: Прототипирование ML, дашборды

import streamlit as st
import pandas as pd

st.title('Мое приложение')
data = pd.read_csv('data.csv')
st.dataframe(data)

Poetry - управление зависимостями

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

# Использование
poetry new project
poetry add requests
poetry install

Logging - встроенное логирование

Возможности: Уровни логирования, обработчики, форматирование
Применение: Отладка, мониторинг приложений

import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.info('Приложение запущено')

Pydantic - валидация данных

Возможности: Валидация, сериализация, настройки
Применение: Валидация API, конфигурация

from pydantic import BaseModel, validator

class User(BaseModel):
    name: str
    age: int
    
    @validator('age')
    def check_age(cls, v):
        if v < 0:
            raise ValueError('Возраст не может быть отрицательным')
        return v

Этот обзор охватывает ключевые библиотеки для основных направлений разработки на Python. Каждая из них решает конкретные задачи и является стандартом в своей области применения.