Skip to main content

🧪 Playground

Loading Python (15 MB, one-time)…

Run Python in your browser

Full CPython via Pyodide. Write, run, share. Code lives in the URL — copy the link and the recipient sees your exact snippet.

NEW✨ Refactor Coach — paste any Python, get a senior review →
✎ playground.py
$ output

Bringing up CPython in your browser…

○Fetching Pyodide WebAssembly (≈ 4 MB)
○Loading the CPython interpreter
○Mounting the standard library
○Ready — clean Python 3.12 shell

Tip: while Python warms up, try editing the code on the left.

Examples

🐚 Try REPL →Browse all →
↗
👋Hello, World!

Confirm Python is running. Smallest possible example.

basics
↗
🐍List comprehensions

The one-liner that makes Python feel like Python.

basicsidioms
↗
📊pandas in 12 lines

Load, filter, group, aggregate. No CSV download needed.

pandasdata
↗
📈Plot with matplotlib

Headless matplotlib via Pyodide — figure renders inline in the output panel.

matplotlibnumpyviz
↗
📐Linear regression with numpy

Fit a line to noisy data in 5 lines.

numpymath
↗
🌐Call a real HTTP API

Fetch GitHub's API with requests. Auto-installed via micropip.

requestsapi
↗
⚡asyncio in action

Run three coroutines concurrently with asyncio.gather.

asyncioconcurrency
↗
📦Dataclasses + descriptors

Real validation without writing __init__ by hand.

dataclassesoop
↗
🔎Regex extraction

Pull structured data out of messy text.

regexstrings
↗
📄CSV read + write

Pure-stdlib CSV with DictReader / DictWriter. No pandas needed.

csvstdlibfiles
↗
📋JSON parse + serialise

json.loads, json.dumps, custom default for dataclasses.

jsonstdlib
↗
🔄Generators + lazy eval

Memory-friendly streaming with yield and generator expressions.

generatorsidiomsmemory
↗
🛠Custom context managers

with-statement support via class + via @contextmanager decorator.

context-manageridioms
↗
⚠Exception patterns

Custom exception hierarchy, EAFP, exception chaining.

exceptionsidioms
↗
🏷Modern type hints

PEP 604 union types, TypedDict, Protocol — what mypy expects in 2026.

typingmypy
↗
🔁itertools tricks

groupby, accumulate, pairwise, combinations — the lazy toolkit.

itertoolsstdlibidioms
↗
🎀Decorators — log + cache + retry

Real-world decorator patterns: logging wrapper, functools.cache, retry on failure.

decoratorsidioms
↗
🗄SQLite from stdlib

Real database (in-memory) — no install. Create, insert, query, parameterise.

sqlitestdlibdatabase
↗
🧵f-string mini-cookbook

Padding, alignment, thousand separators, dates, debug syntax.

fstringstringsidioms
↗
🗂dict patterns

Default values, dict comprehensions, dict union (|), nested gets.

dictstdlib
↗
🧹pandas — clean a messy CSV

Real cleaning: parse dates, strip whitespace, fill missing, dedupe.

pandasdatacleaning
↗
🖼numpy — toy blur kernel

Convolve a 1-D signal with a moving-average kernel.

numpymath
↗
🪄regex — find + replace

Capture groups in re.sub callbacks. Slugify a string.

regexstrings
↗
🧱OOP — properties + validation

@property + @setter pattern for invariant-protected attributes.

oopproperties
cta_title
cta_body

Tips

  • Cmd/Ctrl + Enter runs your code.
  • Pyodide includes pandas, numpy, scipy, matplotlib — `import` them directly.
  • Share button puts your code in the URL — paste anywhere after a free signup.
  • Code persists in your browser between visits.
  • Non-stock packages (requests, httpx, pydantic, attrs) auto-install via micropip on the first run.