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.

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 →examples_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

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, no signup needed.
  • Code persists in your browser between visits.
  • Non-stock packages (requests, httpx, pydantic, attrs) auto-install via micropip on the first run.