← Назад к вопросам

Какие знаешь особенности библиотеки?

1.2 Junior🔥 71 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные библиотеки Python

Как опытный Python разработчик, я работал со множеством библиотек. Расскажу о самых важных:

Standard Library

Встроенные модули решают 80% задач:

  • collections — эффективные структуры данных (defaultdict, Counter, deque)
  • functools — функциональное программирование (reduce, wraps, lru_cache)
  • itertools — генераторы и итераторы для больших объёмов данных
  • pathlib — работа с файловой системой (лучше, чем os.path)
  • dataclasses — автоматическое создание init, repr

Веб-разработка

FastAPI — мой выбор для современных API:

from fastapi import FastAPI, Depends
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    id: int
    name: str
    email: str

@app.get("/users/{user_id}")
async def get_user(user_id: int) -> User:
    return await db.fetch_one("SELECT * FROM users WHERE id = $1", user_id)

Преимущества:

  • Автоматическая валидация через Pydantic
  • Встроенная документация (Swagger, ReDoc)
  • Асинхронность из коробки
  • Быстрее Django на 60-70%

SQLAlchemy — ORM для работы с БД:

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

Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    email = Column(String, unique=True)

engine = create_engine("postgresql://user:pass@localhost/db")
session = Session(engine)
user = session.query(User).filter_by(email="test@mail.com").first()

Асинхронность

asyncio для параллельных операций:

import asyncio

async def fetch_data(url: str) -> dict:
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            return await resp.json()

async def main():
    tasks = [fetch_data(url) for url in urls]
    results = await asyncio.gather(*tasks)

asyncio.run(main())

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

pytest — лучший фреймворк для тестов:

import pytest
from unittest.mock import Mock, patch

@pytest.fixture
def mock_db():
    return Mock()

def test_user_creation(mock_db):
    result = create_user("john@mail.com", mock_db)
    assert result.email == "john@mail.com"
    mock_db.save.assert_called_once()

Обработка данных

pandas — для анализа и трансформации:

import pandas as pd

df = pd.read_csv("data.csv")
df_filtered = df[df["age"] > 18]
result = df_filtered.groupby("city")["salary"].mean()

numpy — для числовых вычислений на больших массивах.

Логирование

logging (встроенный):

import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

handler = logging.StreamHandler()
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)

logger.info("Application started")
logger.error("Error occurred", exc_info=True)

Типизация

typing — статическая типизация:

from typing import Optional, List, Dict, Callable

def process_data(items: List[str], callback: Callable[[str], int]) -> Dict[str, int]:
    return {item: callback(item) for item in items}

Ключевые принципы

  1. Читаемость — Python код должен быть понятен человеку (PEP 20)
  2. SOLID принципы — даже в скриптах
  3. Тестирование — покрытие не менее 80%
  4. Type hints — избегаю any, всё строго типизирую
  5. Clean Code — функции коротке, одна ответственность

Выбираю библиотеки не по популярности, а по задаче: FastAPI для API, SQLAlchemy для ORM, pytest для тестов, pandas для данных.