All guides
Best Python Practice Sites for Every Level (2026)
Where to practise Python after the tutorials: Exercism, Python Morsels, PyBites, CS50P, Codewars and more, matched to your level
dataclasses vs Pydantic vs attrs: Which to Use
Python’s dataclasses, Pydantic, and attrs all cut class boilerplate, but only some validate data. Here’s which to reach for and why
How to Publish a Python Package to PyPI (2026)
Build your package, test it on TestPyPI, then publish to PyPI with twine, uv, Hatch, or Poetry, plus trusted publishing from GitHub Actions
Porting to Python 3.15: What Breaks and How to Fix It
What actually breaks when you upgrade to Python 3.15: UTF-8 default encoding, removed APIs, sqlite3 and argparse changes, and what’s deprecated for 3.16
Python Type Checkers: mypy vs Pyright vs ty vs Pyrefly
mypy, Pyright, ty, and Pyrefly all check your type hints, but they differ in maturity, speed claims, and editor support — here’s how to choose
Is CPython Moving to Rust? What the Proposal Says
Python’s core team is proposing optional Rust code in CPython 3.16, starting with zlib. What’s proposed, what isn’t decided, and what it means for you
Can You Deploy Python to Cloudflare Workers?
Cloudflare Python Workers reached general availability in September 2026 — FastAPI, Django, and Flask run natively, with real limitations worth knowing first
Can pnpm Manage Python Dependencies?
pnpm 12.5 added Python as a first-class ecosystem — automatic interpreter installation, managed virtual environments, and PyPI package support explained
CrewAI vs AutoGen: Which Multi-Agent Framework
CrewAI structures agents around fixed roles and a defined process; AutoGen is built around open-ended agent conversation — here’s the real difference
Gradio vs Streamlit: Which to Use
Both turn a Python script into a shareable web app with no frontend code — here’s the real difference in what each is actually built for
GraphQL vs REST in Python
REST (via Django REST Framework) exposes fixed endpoints; GraphQL (via Strawberry) lets clients query exactly the fields they need — here’s the real trade-off
Haystack vs LangChain: Which for RAG
Haystack is built specifically for production-grade retrieval and search pipelines; LangChain is a broader framework that can also build RAG systems
LangChain vs LlamaIndex: What’s the Difference
LangChain is a general LLM-application framework; LlamaIndex is focused specifically on data ingestion and retrieval — here’s when each one actually fits
Litestar vs FastAPI: What’s the Difference
Litestar ships more batteries-included (DTOs, dependency injection conventions) while FastAPI has the larger ecosystem — here’s the real trade-off
Matplotlib vs Seaborn vs Plotly Compared
Matplotlib is the low-level foundation, Seaborn makes statistical plots simpler on top of it, and Plotly adds interactivity — here’s which to reach for
MLflow vs DVC: What’s the Difference
MLflow tracks experiments and manages the model lifecycle; DVC version-controls data and pipelines like Git for datasets — they solve different problems
NumPy vs Pandas: What’s the Difference
NumPy handles raw numerical arrays; pandas builds labeled, tabular DataFrames on top of it — here’s the real distinction beginners run into
NumPy vs SciPy: What’s the Difference
NumPy provides the array data structure and basic operations; SciPy builds specialized scientific algorithms on top of it — here’s how they actually relate
Scikit-learn vs PyTorch vs TensorFlow
Scikit-learn is for classical machine learning; PyTorch and TensorFlow are for deep learning — they’re not really competing for the same job
What Is Alembic? Database Migrations Explained
How Alembic tracks and applies versioned schema changes for SQLAlchemy projects, and why you need it the moment a database schema has to change
What Is Hugging Face?
How the Hugging Face Hub, Transformers library, and Spaces fit together, and why it’s become the default starting point for working with open models in Python
What Is Loguru? Python Logging Explained
Loguru replaces the standard library’s logging setup with sensible defaults, structured output, and rotation built in from the start
What Is MarkItDown? Docs to Markdown Explained
Microsoft’s tool for converting Office documents, PDFs, and other files into clean Markdown — and why that matters for feeding documents to an LLM
What Is the OpenAI Python Library?
The official Python client for the OpenAI API — chat completions, embeddings, streaming, and function calling — and how it fits with Instructor and Pydantic AI
What Is Pydantic? Python Validation Explained
How Pydantic validates and parses data using Python type hints, and why it’s become the default choice underneath FastAPI and most of the modern AI stack
What Is Rich? Terminal Formatting Explained
How Rich turns plain terminal output into formatted tables, progress bars, and syntax-highlighted text with just a few lines of Python
What Is Smolagents? Hugging Face’s Agent Library
A minimal, code-first agent library from Hugging Face — how it differs from heavier frameworks like LangChain, and when its simplicity is the point
What Is yt-dlp?
A feature-rich command-line tool and Python library for downloading video and audio from YouTube and thousands of other sites
CircuitPython vs MicroPython: What’s the Difference
CircuitPython is Adafruit’s beginner-friendly fork of MicroPython — here’s how the drag-and-drop workflow, hardware support, and performance actually differ
Python Async Generators Explained
How async def combined with yield actually works, when to reach for one over a regular generator or async function, and what’s changing in Python 3.16
Python Free-Threaded Mode (No-GIL) Explained
What free-threaded Python actually is, why it’s opt-in rather than the default, and when disabling the GIL is worth trying
Click vs Typer: Which Python CLI Library
Typer is built on Click and adds type-hint-driven CLIs with less boilerplate — here’s when that trade is worth it and when plain Click still wins
FastAPI vs Starlette: What’s the Difference
FastAPI is built directly on Starlette, so this isn’t really a competition — here’s what FastAPI actually adds on top, and when Starlette alone is enough
Hatch vs uv: Which One for a New Python Project
Hatch and uv both manage Python projects and environments — how they actually differ, and why most people end up using both together
httpx vs requests: Do You Need to Switch
requests is still fine for most scripts — httpx earns its place specifically with async code and HTTP/2, not as a blanket upgrade
Polars vs Pandas: Should You Switch
Polars is faster and handles bigger-than-memory data better than pandas — here’s what that actually means for a real project, and when pandas still wins
Python Generators Explained
Generators produce values one at a time instead of building a full list in memory — what yield actually does, and when it matters
PyTorch vs TensorFlow: Which to Learn in 2026
PyTorch won research and is closing the gap in production; TensorFlow still has the edge on mobile and legacy deployment — here’s the actual current state
SQLAlchemy vs Django ORM: Which One to Use
Django’s ORM is simpler and tied to Django; SQLAlchemy is more powerful and framework-independent — here’s the real trade-off, not just a feature list
What Is Celery? Python Task Queues Explained
Celery runs slow work outside the request/response cycle — here’s what it actually does, when you need it, and simpler alternatives for smaller projects
What Is Mojo? Chris Lattner’s New AI Language Explained
Mojo combines Python syntax with systems-level performance for GPU/CPU workloads — what it actually is, now that it’s hit 1.0 and gone open source
What Is Ollama? Running LLMs Locally Explained
Ollama runs open-weight LLMs on your own machine with a simple CLI and local API — what it actually does, and why you’d use it over a hosted API
Instructor vs Pydantic AI: What’s the Difference
Instructor and Pydantic AI both promise structured, typed LLM output using Pydantic — here’s what actually separates a narrow tool from a full agent framework
LangChain vs LangGraph: What’s Actually Different
Why LangGraph exists alongside LangChain, built by the same team, and when to reach for one over the other
Python AI Agent Frameworks Compared
How LangGraph, CrewAI, AutoGen, and smolagents actually differ, and which one fits a new multi-agent Python project
Django REST Framework Explained: Building APIs on Django
What Django REST Framework actually adds to Django, a basic serializer/viewset example, and when it’s the right choice for an API
Django REST Framework vs FastAPI: Which for a New API?
How Django REST Framework and FastAPI actually differ for building an API, and which one fits a new project vs an existing Django codebase
Python 3.15’s JIT Compiler: How Much Faster Is It Really?
What actually changed in Python 3.15’s experimental JIT, the real speedup numbers, and whether it’s worth enabling yet
Python 3.15 Explained: 5 Videos Worth Watching
The best YouTube explainers covering Python 3.15’s new features, from a quick overview to hands-on looks at specific changes
Python 3.15: What’s New
Python 3.15’s key changes — lazy imports, a new profiling package, JIT speedups, and and the other PEPs worth knowing about in the final 3.15.0 release
What Is MCP (Model Context Protocol)? A Python Guide
What the Model Context Protocol actually standardizes, how it differs from LangChain or DSPy, and a basic FastMCP server example
Ruff vs Black vs autopep8 vs yapf: Formatters Compared
Ruff vs Black, plus autopep8 and yapf: how these Python code formatters differ, and which one to pick for a new or existing project
Common Python Packages Every Developer Should Know
A short, practical list of Python packages you’ll reach for constantly — what each one does and why it’s the default choice
DSPy Explained: Programming, Not Prompting, Language Models
What DSPy is, how it differs from hand-writing prompts, and a basic example of defining a module and letting DSPy optimize it
FastAPI and HTMX: Interactive UIs Without a JS Framework
How FastAPI and HTMX pair together to build dynamic, interactive web apps using server-rendered HTML instead of a JavaScript frontend framework
Poetry vs uv vs Hatch: Which Python Packaging Tool in 2026
A head-to-head comparison of Poetry, uv, and Hatch — speed, lockfile behavior, and PEP 621 compliance, for picking a new project’s tooling
pytest vs unittest: Choosing a Python Testing Framework
How pytest and Python’s built-in unittest module differ, and why most teams choose pytest despite unittest requiring no installation
Python Decorators Explained: What and When to Write One
How Python decorators actually work under the hood, with the built-in decorators you already use and a guide to writing your own
Python Resources for Beginners: Where to Start in 2026
The core set of resources worth starting with when you’re new to Python — courses, books, and tools, without the overwhelming full directory
The Python Standard Library: Built-In Modules Worth Knowing
The standard library modules you’ll actually reach for regularly — no pip install required, already in every Python installation
Python Virtual Environments Explained: venv vs uv vs conda
What a Python virtual environment actually is, why every project needs one, and how venv, uv, and conda differ in creating them
requirements.txt vs pyproject.toml: What’s the Difference
Why Python packaging moved from requirements.txt to pyproject.toml, what each actually does, and whether you still need a requirements.txt file
Streamlit Explained: Turning Python Scripts Into Web Apps
What Streamlit actually does, a basic example, and when to reach for it instead of Flask or FastAPI
What Does Black Do? Python’s Code Formatter Explained
How Black formats Python code, why it’s deliberately unconfigurable, and how it differs from autopep8 and yapf
What Is Uvicorn? The ASGI Server Behind FastAPI, Explained
Uvicorn is the ASGI server every FastAPI app runs on — how it works, and the production setup (Gunicorn workers, graceful shutdowns) most tutorials skip
The Best Python Books for Beginners in 2026
Which Python books are actually worth reading as a beginner, and the order to read them in
The Best Python IDEs and Editors in 2026
A practical comparison of the top Python IDEs and editors — what each one is best at, and how to choose
Best Python Learning Resources in 2026
A curated shortlist of the best free and paid resources for learning Python in 2026, organised by skill level and learning style
The Best Python Testing Tools, Compared
pytest, unittest, and the surrounding testing ecosystem — what each tool does and when you actually need it
The Best Python YouTube Channels in 2026
Which Python YouTube channels are actually worth subscribing to, organised by what you’re trying to learn
Django vs FastAPI vs Flask: Choosing a Python Web Framework
A practical comparison of Django, FastAPI, and Flask — what each is actually good at, and how to pick the right one for your project
FastAPI vs Robyn vs Flask: Which Should You Choose?
A practical comparison of FastAPI, Robyn, and Flask — performance, ecosystem maturity, and which one actually fits your project
How to Write Clean Python Code: A Practical Guide
Concrete, non-obvious rules for writing clean, readable Python — naming, structure, and the habits that actually matter
The Most Popular Python Packages in 2026 (and What They Do)
A plain-English breakdown of the Python packages with the highest download counts, and why they’re downloaded so much
Python Async/Await Explained (Without the Jargon)
A plain-English explanation of Python’s async/await, when it actually helps, and the mistakes that make it worse than sync code
The Python Learning Roadmap for 2026
A step-by-step path from zero to job-ready Python — what to learn in what order, and which resources to use at each stage
Best Python Package Manager 2026: pip, Poetry, uv, Hatch
The best Python package manager for a new project in 2026, and how pip, Poetry, uv, and Hatch actually differ
Python’s resource Module Explained
How to use Python’s built-in resource module to read and limit CPU time, memory, and file descriptors on Unix systems
Python Type Hints: A Practical Guide
How to actually use Python type hints beyond the basics — generics, Optional, Protocol, and when they’re worth the effort
How to Find Trending Python Repos with Good First Issues
A practical method for finding active Python open source projects that are actually welcoming to first-time contributors