The Python Tutorial
Cookbook, IAQ, calmcode, Real Python Tutorials
Mojo
Robocorp
Jython🏚️
IronPython
Distribution: WinPython
Libraries: NumPy, Matplotlib, pandas
Tools
personal notes
Articles and videos
- Idioms and Anti-Idioms in Python by ► Short list of tips for coding in Python. Not of particular interest.
- Regular Expression HOWTO by ► A tutorial to
regexps in Python (they are the same as in Perl). - Comparison of Tcl and Python🚫 by (1995) ► This is a short comparison of the two languages, but some details are out of date.
- Java and Python: a perfect couple🚫 by (1998) ► This article describes the Java implementation of Python.
- A Perl Hacker in the Land of Python by (7 February 2000) ► This is yet another Perl/Python comparison, with a final keynote about Zope.
- Python Patterns - Implementing Graphs by (4 December 2000) ► Some small example of graph algorithms.
- Combining Python and C++🗑️ by (19 July 2001) ► The current status of the tools available to use C++ from Python.
- Sorting Mini-HOWTO by (17 April 2002) ► An overview of how to sort lists.
- Charming Python: Make Python run as fast as C with Psyco🗑️ by (October 2002) ► A quick presentation of Psycho which performs runtime optimisation of some given functions.
- Python persistence management — Use serialization to store Python objects🗑️ by (November 2002) ► An introduction to pickling.
- Guide to Python introspection — How to spy on your Python objects🗑️ by (December 2002) ► The
dir,id,hasattr,getattr,type… functions. - Qt and PyQt — An advanced GUI library for Python🗑️ by and (11 February 2003) ► A presentation of the Python binding of Qt. The authors also list the other language bindings of Q and other GUI toolkits for Python.
- Metaclass programming in Python — Pushing object-oriented programming to the next level by and (26 February 2003) ► The title says it all.
- Wrap GObjects in Python — You don't have to be a C guru to wrap modules for Python🗑️ by (11 March 2003) ► How to encapsulate GTK+ widgets into a Python (native) module.
- Charming Python: Multiple dispatch — Generalizing polymorphism with multimethods🗑️ by (20 March 2003) ► The author describes the multimethods module he has created to support method dispatching depending on the classes of the parameters (instead of only the class of the current object as usual).
- Charming Jython — Learn how the Java implementation of Python can aid your development efforts🗑️ by (6 May 2003) ► A simple introduction to Jython.
- Editor Configuration for Python🚫 (⧉) by (1 August 2003) ► A list of resources to configure several text editors for Python.
- Python Warts by (16 August 2003) ► A list of the main issues with Python.
- Django: The First Five Years by (17 December 2008) ► A detailed and technical archaeology of Django. This would be of interest only for those who are interested by the history of this framework.
- Porting Perl To Python — Techniques for migrating legacy, untested Perl to Python↓🗑️ by (1 September 2010) ► The author simply suggests writing tests corresponding to what the Perl code should do, then to write the Python code to pass successfully these tests. This is simply TDD…
- PEP 483 – The Theory of Type Hints by and (19 December 2014) ► It is painful to read this description of type hints.
- Micropython Name Badge - Computerphile by (24 August 2016) ► Using MicroPython to play with the Electromagnetic Field 2016 name badge.
- Python Tutorial: Unit Testing Your Code with the unittest Module by (16 August 2017) ► A presentation of the
unittestunit testing framework. - Keyword (Named) Arguments in Python: How to Use Them by (4 April 2018) ► A clear explanation of keyword arguments.
- Wes McKinney: pandas in 10 minutes | Walkthrough by (17 September 2019) ► A fast-paced overview of pandas features.
- Laziness in Python - Computerphile by (26 August 2020) ►
yieldandyield from. - Getting started with... Python — Here's a collection of resources on how to get started using Python. by (14 July 2021) ► The subtitle says it all.
- Using VCR and pytest with pytest-recording by (2 November 2021) ►
pytest-recordingis apytestplugin that records network interactions once and replay them for the next test runs. - Python Tips & Tricks by (16 February 2022) ► Some miscellaneous notes about Python.
- 5 Reasons Why You Should Use Type Hints In Python by (1 July 2022) ► Stating the obvious…
- "Python Performance Matters" by Emery Berger (Strange Loop 2022) by (6 October 2022) ► A presentation of Scalene, a Python CPU, GPU, and memory profiler.
- Mark Smith - Stupid Things I've Done With Python by (12 November 2022) ► Playing with dunder methods.
- Ruff is the FUTURE of Python development by (27 February 2023) ► A presentation of Ruff, a fast Python linter.
- MIT Turbocharges Python’s Notoriously Slow Compiler — Codon lets users run Python code as efficiently as C or C++ by (30 March 2023) ► This article just seems to repeat some marketing bullshit.
- Why Python is terrible... — Nice language, but unsuitable for most professional purposes by (2 August 2023) ► I agree.
- ↪Why Python is amazing... — Great language that every software engineer should know… by (9 August 2023) ► A false denial.
- CPython without a global interpreter lock by (9 August 2023) ► A summary of PEP 703 to create a Python build without the global interpreter lock.
- The Ruff formatter is 130x FASTER than Black by (6 November 2023) ► An evaluation of Ruff.
- What the Heck Are Monads?! by (10 November 2023) ► A presentation of functors and monads, but explaining something abstract by only showing code results in a description which is not so clear.
- 6 Things I Never Knew About Pandas Until Recently by (3 December 2023) ► Some random pandas features.
- FREE Cloud Database Every SWE Student Needs To Know (+ basic usage with Python & Pymongo) by (28 January 2024) ► A short introduction on using the free offer of MongoDB Atlas with Python.
- AI and Rules for Agile Microservices in Minutes — Create a project instantly using AI and API/Logic Automation. Customize later with Python, Rules, and Flask, which is open-source. by (1 February 2024) ► A presentation/advertisement of ApiLogicServer.
- Mesop - Google's New UI Maker by (18 June 2024) ► A presentation of Mesop, a library for quickly creating UIs for ML/AI prototypes.
- Will Python SKIP these versions? by (24 June 2024) ► Python may change its version numbering system.
- PyPI now supports digital attestations by (14 November 2024) ► The title says it all.
- Est-ce que Taylor Swift chante en playback dans sa tournée ? — Des analyses d’enregistrements live tendent à le montrer, alors j’ai sorti mon python pour essayer d’y voir clair ! by (2 December 2024) ► is doing some signal processing.
- Fixes for datetime UTC warnings in Python by (12 December 2024) ► The title says it all.
- URL-addressable Pyodide Python environments by (13 February 2025) ► is doing some proselytising for Pyodide and is explaining how he fixed a bug in Datasette Lite, a version of Datasette running in the browser.
- Essential Python Libraries: Introduction to NumPy and Pandas — NumPy and Pandas are essential Python libraries for efficient numerical computing and data manipulation with powerful tools for analysis and data handling. by (4 March 2025) ► A too succinct introduction to NumPy and Pandas.
- 17 Reasons Why Gradio Isn't Just Another UI Library by and (16 April 2025) ► A long, boring, biased list of Gradio advantages.
- Introducing Datasette for Newsrooms by (24 April 2025) ► proposes a Datasette offer for journalists.
- Python's pattern matching is EXCEPTIONAL by (29 April 2025) ► A presentation of pattern matching.
- Python's 5 BIGGEST gotchas↓ by (2 June 2025) ► Only one of the five "gotchas" is really one, the others are just basic classic programming.
- python-importtime-graph by (20 June 2025) ► Using python-importtime-graph to generate an unreadable report of the time spent to import each module.
- pyx: a Python-native package registry, now in Beta by (13 August 2025) ► Astral starts to deliver some paid products:
pyx, a package registry. - PyPI: Preventing Domain Resurrection Attacks by (19 August 2025) ► PyPI now treats an email address as not-validated if the associated domain expires.
- 10 Smart Performance Hacks For Faster Python Code by (5 November 2025) ► A completely random list of performance tricks, from the most obvious ones to some technical tricks.
- Books
- Thinking in Python🚫 by (2001) ► Design patterns applied to Python.
- Dive Into Python 3 by (2001) ► A free book to learn Python.
uv- uv: Python packaging in Rust by (15 February 2024) ► Yet another Python package manager.
- Is "uv" the FUTURE of Python package management? by (19 February 2024) ► A
pipvs.uvperformance comparison. - uv: Unified Python packaging by (20 August 2024) ► This article gives the long list of
uvfeatures as they stand with the 0.3 release. - uv: Unified Python packaging by (20 August 2024) ► A short summary of
uv0.3 new features. - Rye and uv: August is Harvest Season for Python Packaging by (21 August 2024) ► advises Python projects to promote a single management tool:
uv. - UV - A modern python project and dependency manager by (23 August 2024) ► Yet another presentation of
uv. - uv under discussion on Mastodon by (8 September 2024) ► The feeling of some important Python contributors about the fact that
uvis created by a private start-up. - sudoku-in-python-packaging by (21 October 2024) ► Exploiting Python package management to solve Sudoku puzzles and comparing the poor performance of
pipwith the correct one ofuv. - uv: An Extremely Fast Python Package Manager by (23 October 2024) ► A detailed technical description of some aspects of
uv. - Trying out Python packages with ipython and uvx by (13 February 2025) ► The title says it all.
- UV one year on: the FUTURE of Python is NOW by (24 February 2025) ► A presentation of
uvfeatures and performance. - Why Python Developers Are Switching to UV by (7 August 2025) ► A very basic and short introduction to
uv.
- Pydantic
- Pydantic Tutorial • Solving Python's Biggest Problem by (18 September 2023) ► A good introduction to Pydantic for beginners.
- Pydantic is OP, here's why by (1 July 2024) ► A presentation of Pydantic 2.
- Pydantic: Simplifying Data Validation in Python — Pydantic is a powerful Python library that uses type annotations to validate data structures. Learn about the powerful features of Pydantic with code examples. by (3 February 2025) ► A short presentation of Pydantic.
- FastAPI
- FastAPI for AI Engineers - Getting Started in 15 Minutes by (22 May 2025) ► A slow presentation of FastAPI.
- Polars
- SDS 815: Polars: Faster DataFrame Ops, with Marco Gorelli (⧉) by and (3 September 2024) ► Some technical details about Polars, a presentation of Narwhals, and some comments about open-source.
- SDS 885: Python Polars: The Definitive Guide, with Jeroen Janssens and Thijs Nieuwdorp (⧉) by and (6 May 2025) ► This interview is a messy list of random subjects; there is little information about Polars.
- Gradio
- Gradio 5 - Building a Quick Chabot UI for LangChain by (10 October 2024) ► A small example of a streaming chat program with Gradio 5 and LangChain.
- Upskill your LLMs With Gradio MCP Servers by (9 July 2025) ► Hugging Face Spaces can be used as a catalogue of MCP servers.
- Five Big Improvements to Gradio MCP Servers by (17 July 2025) ► Some Gradio improvements to facilitate the implementation of a MCP server.
- History
- What’s New in Python 2.0 by and (2000) ► Python is now managed on SourceForge, Unicode support, list comprehension, augmented assignment, Distutils, XML support…
- What’s New in Python 2.1 by (January 2001) ► Nested scope, function attributes, rich comparisons…
- What’s New in Python 2.2 by (July 2001) ► Iterators, generators, division operators…
- Regular Expressions: What's So Special About Python 2.2?🚫 by and (September 2001) ► An introductory presentation of Python 2.2, much less detailed than the previous article.
- What’s New in Python 2.3 by (July 2003) ► Sets, Boolean type, zip archive…
- Python 3000 by (21 July 2006) ► Guido explains the philosophy of Python 3, what will be added, what will be removed…
- Python 3 primer, Part 1: What's new — Cleaner syntax for better code🗑️ by (19 December 2008) ►
print(),input(),bytes(), string formatting,dict, and the new I/O. - ↪Python 3 primer, Part 2: Advanced topics — Metaclasses, decorators, and other strange creatures🗑️ by (30 January 2009) ► Class decorators, abstract base classes, exceptions, and function annotations.
- 3.10
- Les évolutions de Python 3.10 — Version majeure publiée récemment par la Python Software Foundation, Python 3.10 apporte plusieurs améliorations et fonctionnalités importantes. by and (18 November 2021) ► Structural pattern matching, better error messages, parameter specification variables…
- 3.12
- New Features You Need To Know In Python 3.12 by (29 September 2023) ► The title says it all.
- ALL Python 3.12's major typing improvements by (9 October 2023) ► PEP 695 definition of generic classes and types, PEP 698 the
@overridedecorator, and PEP 692**kwargstyping.
- 3.13
- Python now has COLOURED tracebacks by (15 January 2024) ► Python 3.13 will have better error reports and stack traces.
- What's new in Python 3.13? by (7 May 2024) ► The title says it all.
- This Python REPL *FEATURE* is a Game-Changer | Python 3.13 Update by (18 September 2024) ► The improvements of the REPL.
- What's New In Python 3.13 by (7 October 2024) ► ’s short notes on this new Python version.
- Python 3.13 release: bye GIL, hi JIT, new REPL! by (7 October 2024) ► A summary of what is and what is not in Python 3.13.
- 3.14
- What's coming in Python 3.14? by (29 October 2024) ► The scope of 3.14 as currently known.
- python-build-standalone now has Python 3.14.0a5 by (13 February 2025) ► You can experiment with a first version of the tail-calling interpreter using
uv. - What's new in Python 3.14? by (6 May 2025) ► The list of new features as of the 3.14 beta release.
- Python 3.14 Is Changing How You Handle Exceptions — PEP 765 by (8 May 2025) ►
return,break, orcontinuein afinallyblock will now generate a syntax warning. - PyREPL now has SYNTAX HIGHLIGHTING + colour theming?! by (12 May 2025) ► How to customise the colours of the colourised REPL introduced in 3.14.
- Python's new T-STRINGS (template strings) by (19 May 2025) ► A presentation of Template Strings.
- Python MASSIVELY improved errors in Python 3.14 by (26 May 2025) ► List of exceptions in an
exceptblock do not require brackets (PEP 758) andreturnin afinallygenerates a warning (PEP 765). - Python 3.14 is introducing a new type of interpreter…↓ by (10 June 2025) ► A rather messy explanation of the tail call optimisation.
- Python 3.14 lets you inspect your async/await code with these two new commands by (21 July 2025) ► A very short presentation of
python -m asyncio ps PIDandpython -m asyncio pstree PIDto display the asyncio tasks of a running process. - Python 3.14 (π-thon) by (7 October 2025) ► The list of changes in 3.14.
- Python 3.14 by (7 October 2025) ► Another description of the features introduced by Python 3.14.
- Python 3.14 by (8 October 2025) ► gives little information about 3.14 and also about 3.10 that he will now be able to use in
llm.
- Tutorials
- This Is Why Python Data Classes Are Awesome by (25 March 2022) ► An introduction to Data Classes.
- Python Decorators: The Complete Guide by (27 January 2023) ► The title says it all.
- How to Build a Complete Python Package Step-by-Step by (3 March 2023) ► How to build a package and publish it on PyPI.
- How to Create and Use Virtual Environments in Python With Poetry by (24 March 2023) ► The title says it all.
- 15 Python Libraries You Should Know About by (15 September 2023) ► A list of libraries shortly described.
- 7 Things I Never Knew About Python Until Recently (Part 1)↓ by (22 October 2023) ► Some random and rather useless Python features.
- ↪12 Things I Never Knew About Python Until Recently (Part 2)↓ by (2 November 2023) ► The continuation of the previous video.
- 7 Levels Of Creating Classes in Python (Easy To Difficult To Ridiculous) by (28 October 2023) ► A short presentation of Python classes.
- 8 Techniques To Condense Your Python Function into ONE Line (+cheat that works for 99% of functions) by (5 November 2023) ► How to write unreadable code.
- 13 Cool Ways to Use F-Strings in Python (Reducing Pain of Manipulating Strings) by (9 November 2023) ► Some miscellaneous f-string features.
- 10 Built-in Python Functions You CANNOT Miss Out On (else coding could be quite painful) by (21 November 2023) ► Some miscellaneous built-in functions.
- 7 Things I Recently Knew About Python Classes & Object-Oriented Programming in Python by (1 December 2023) ► Some less known Class features.
- 9 Pip Commands That Make Your Life Easier (And Less Painful) by (2 December 2023) ► The very basics of
pip. - 9 things I Never Knew About Python Functions Until Recently by (7 December 2023) ► Miscellaneous Python features.
- 7 Things I Only Recently Knew About print() in Python by (8 December 2023) ► Some print options and the ANSI escape sequences.
- 6 Things I Never Knew About Python LOOPS Until Recent Years by (10 December 2023) ► Some rather common loop features.
- 5 Things I Never Knew About EXCEPTIONS in Python (Until Recently) by (13 December 2023) ► Some lesser-known exception features.
- 6 Things I Never Knew About IMPORTS in Python Until Recently by (15 December 2023) ► The title says it all.
- Number Triangles (Can You Solve This In ONE Line? 1) by (5 January 2024) ► Some stupid list comprehensions.
- 7 Things I Never Knew About Decorators (Python) Until Recently by (3 February 2024) ► A presentation of decorators.
- What are these (/ and *) parameters in function? 2MinutesPy by (1 April 2024) ► An explanation of the
def quux(pos1, pos2, /, pos_or_kwd1, pos_or_kwd2, *, kwd1, kwd2):syntax. - Python's most CONTROVERSIAL feature, explained by (25 March 2025) ► The Walrus Operator.
- Sets are absolutely CRACKED in Python by (9 June 2025) ► The basics of Sets.
- Object-oriented Programming in Python...↓ by (28 June 2025) ► The most basic introduction to Object Orientation.
- How to Use Logging in real-world Projects? 2MinutesPy by (15 August 2025) ► A very basic and short introduction to logging.
- Exception Handling in Python | Best Practices and Methods | 2MinutesPy↓ by (4 October 2025) ► A very basic and short introduction to exceptions.
- The Secret Object That Controls All of Python by (12 October 2025) ► Everything is an object, dunders, and the descriptor protocol.
- Learn Python with Pj!
- Learn Python with Pj! Part 1 - Getting started by (8 February 2022) ► A wannabe developer is discovering Python.
- ↪Learn Python with Pj! Part 2 - Lists and loops by (1 March 2022) ► The title says it all.
- ↪Learn Python with Pj! Part 3 - Functions and strings by (4 April 2022) ► The title says it all.
- ↪Learn Python with Pj! Part 4 - Dictionaries and Files by (5 May 2022) ► The title says it all.
- ↪Learn Python with Pj! Part 5 - Build a hashtag tracker with the Twitter API by (1 June 2022) ► The guy finishes with the usual simple program to process tweets.