Найти в Дзене
Цифровая Переплавка

🐍 Почему перешёл на Python, и это оказалось здорово

В мире IT каждое десятилетие приходит своя волна хайпа: сначала был Java-бум, затем JavaScript захватил фронтенд, а теперь все говорят только об искусственном интеллекте и машинном обучении. Именно этот тренд заставил автора недавней статьи, опытного разработчика на Java, JavaScript и R, по-настоящему погрузиться в Python. И, вопреки ожиданиям, он оказался в полном восторге. Переход на Python был обусловлен одним простым фактом — это основной язык для разработки AI-приложений. Автор признал неизбежное: хочешь создавать решения в области генеративного ИИ, агентов, чат-ботов — придётся дружить с Python. Однако было опасение: язык казался ему медленным и «странным». Но это был Python прошлого — сегодня ситуация кардинально изменилась. Что же изменилось за последние годы? Автор делится своим набором инструментов, позволяющих быстро и эффективно создавать качественные приложения на Python: Он выбирает подход монорепозитория, объединяя frontend и backend в одной структуре: Вместо привычных p
Оглавление
Разработчик радостно «приручает» дружелюбного питона перед монитором с кодом, а вокруг парят иконки тестов, облака и ракет — образ плавного перехода на Python и его богатой экосистемы для AI‑проекта.
Разработчик радостно «приручает» дружелюбного питона перед монитором с кодом, а вокруг парят иконки тестов, облака и ракет — образ плавного перехода на Python и его богатой экосистемы для AI‑проекта.

В мире IT каждое десятилетие приходит своя волна хайпа: сначала был Java-бум, затем JavaScript захватил фронтенд, а теперь все говорят только об искусственном интеллекте и машинном обучении. Именно этот тренд заставил автора недавней статьи, опытного разработчика на Java, JavaScript и R, по-настоящему погрузиться в Python. И, вопреки ожиданиям, он оказался в полном восторге.

🤔 Почему именно Python?

Переход на Python был обусловлен одним простым фактом — это основной язык для разработки AI-приложений. Автор признал неизбежное: хочешь создавать решения в области генеративного ИИ, агентов, чат-ботов — придётся дружить с Python.

Однако было опасение: язык казался ему медленным и «странным». Но это был Python прошлого — сегодня ситуация кардинально изменилась.

Что же изменилось за последние годы?

  • 🚀 Скорость: Python стал гораздо быстрее благодаря компиляторам, таким как Cython.
  • 📚 Экосистема: появилось множество мощных библиотек и инструментов для работы с данными и машинного обучения.
  • Синтаксис: исчезли многие старые «некрасивости», язык стал удобнее, а типизация добавила ему надёжности.

🛠️ Как собрать продакшн-ready проект на Python?

Автор делится своим набором инструментов, позволяющих быстро и эффективно создавать качественные приложения на Python:

📂 Структура проекта (монорепозиторий)

Он выбирает подход монорепозитория, объединяя frontend и backend в одной структуре:

  • 📌 project-api: backend (FastAPI, Python)
  • 🌐 project-ui: frontend (например, Next.js, React)

📦 Менеджер пакетов uv

Вместо привычных pip или poetry автор советует использовать uv, который отличается высокой скоростью и простотой в работе:

uv init project-api
uv add --dev pytest ruff pre-commit mkdocs gitleaks fastapi pydantic
uv sync
uv venv activate

🧹 Линтер и форматтер ruff

Единый инструмент для форматирования и линтинга кода, заменяющий сразу несколько отдельных инструментов (flake8, black, isort):

ruff check path/to/code/
ruff format path/to/code/

🧪 Тестирование с помощью pytest

Для простого и надёжного тестирования используется pytest. Простота в создании тестов и удобство отладки делают его незаменимым:

uv run pytest

🔐 Валидация данных с Pydantic

Pydantic помогает валидировать данные и удобно управлять настройками приложения через переменные окружения и .env-файлы:

from pydantic import BaseSettings

class Settings(BaseSettings):
api_key: str
db_url: str

class Config:
env_file = ".env"

settings = Settings()

📖 Документация и сайт с MkDocs

С помощью MkDocs можно быстро создать удобный сайт-документацию, который автоматически обновляется при внесении изменений:

uv run mkdocs serve

⚡ Быстрое создание API с FastAPI

FastAPI позволяет очень легко создавать RESTful API с автоматической валидацией и документацией:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
return {"Hello": "World"}

📌 GitHub Actions и Dependabot для CI/CD

  • 🤖 GitHub Actions автоматизирует тестирование и развёртывание:

name: CI-API
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: docker build -t project-api:ci ./project-api
- run: docker run --rm project-api:ci pytest

  • 🔄 Dependabot следит за зависимостями и автоматически создаёт PR с обновлениями:

version: 2
updates:
- package-ecosystem: "uv"
directory: "/"
schedule:
interval: "weekly"

🐳 Контейнеризация через Docker

Автор использует Docker и Docker Compose для упрощения разработки и развёртывания:

FROM python:3.11-slim
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
WORKDIR /app
COPY uv.lock pyproject.toml README.md ./
RUN uv sync --frozen --no-cache
COPY src/app app/
CMD ["/app/.venv/bin/fastapi", "run", "project/infrastructure/api.py", "--port", "8000", "--host", "0.0.0.0"]

🎯 Личный взгляд и выводы

Как человек, который также много лет программировал на Java и других языках, я прекрасно понимаю радость автора. Python, который был языком для простых скриптов, действительно вырос в полноценный инструмент, подходящий для «серьёзных» приложений.

Однако, переход на Python требует некоторых усилий по перестройке мышления и подходов к проектированию. Но преимущества очевидны:

  • 🥳 Удобство разработки: Python просто удобнее и приятнее в работе.
  • 🌎 Огромное комьюнити: всегда есть готовые решения и ответы.
  • 🧠 Незаменимость в AI и ML: сейчас Python — это must-have, если вы хотите работать с ИИ.

📌 Заключение

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

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

🔗 Источник новости: I'm switching to Python and actually liking it