Комментарии (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}
Ключевые принципы
- Читаемость — Python код должен быть понятен человеку (PEP 20)
- SOLID принципы — даже в скриптах
- Тестирование — покрытие не менее 80%
- Type hints — избегаю any, всё строго типизирую
- Clean Code — функции коротке, одна ответственность
Выбираю библиотеки не по популярности, а по задаче: FastAPI для API, SQLAlchemy для ORM, pytest для тестов, pandas для данных.