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
regexp
s 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 (February 7th, 2000) ► This is yet another Perl/Python comparison, with a final keynote about Zope.
- Python Patterns - Implementing Graphs by (December 4th, 2000) ► Some small example of graph algorithms.
- Combining Python and C++🗑️ by (July 19th, 2001) ► The current status of the tools available to use C++ from Python.
- Sorting Mini-HOWTO by (April 17th, 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 (February 11th, 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 (February 26th, 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 (March 11th, 2003) ► How to encapsulate GTK+ widgets into a Python (native) module.
- Charming Python: Multiple dispatch — Generalizing polymorphism with multimethods🗑️ by (March 20th, 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 (May 6th, 2003) ► A simple introduction to Jython.
- Editor Configuration for Python🚫 (⧉) by (August 1st, 2003) ► A list of resources to configure several text editors for Python.
- Python Warts by (August 16th, 2003) ► A list of the main issues with Python.
- Django: The First Five Years by (December 17th, 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 (September 1st, 2010) ► The author simply suggests writing tests corresponding to what the Perl code should to, then to write the Python code to pass successfully these tests. This is simply TDD…
- PEP 483 – The Theory of Type Hints by and (December 19th, 2014) ► It is painful to read this description of type hints.
- Micropython Name Badge - Computerphile by (August 24th, 2016) ► using MicroPython to play with the Electromagnetic Field 2016 name badge.
-
Python Tutorial: Unit Testing Your Code with the unittest Module by (August 16th, 2017) ► A presentation of the
unittest
unit testing framework. - Keyword (Named) Arguments in Python: How to Use Them by (April 4th, 2018) ► A clear explanation of keyword arguments.
- Wes McKinney: pandas in 10 minutes | Walkthrough by (September 17th, 2019) ► A fast-paced overview of pandas features.
-
Laziness in Python - Computerphile by (August 26th, 2020) ►
yield
andyield from
. - Getting started with... Python — Here's a collection of resources on how to get started using Python. by (July 14th, 2021) ► The subtitle says it all.
-
Using VCR and pytest with pytest-recording by (November 2nd, 2021) ►
pytest-recording
is apytest
plugin that records network interactions once and replay them for the next test runs. - Python Tips & Tricks by (February 16th, 2022) ► Some miscellaneous notes about Python.
- 5 Reasons Why You Should Use Type Hints In Python by (July 1st, 2022) ► Stating the obvious…
- "Python Performance Matters" by Emery Berger (Strange Loop 2022) by (October 6th, 2022) ► A presentation of Scalene, a Python CPU, GPU, and memory profiler.
- Mark Smith - Stupid Things I've Done With Python by (November 12th, 2022) ► Playing with dunder methods.
- Ruff is the FUTURE of Python development by (February 27th, 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 (March 30th, 2023) ► This article just seems to repeat some marketing bullshit.
- Why Python is terrible... — Nice language, but unsuitable for most professional purposes by (August 2nd, 2023) ► I agree.
- ↪Why Python is amazing... — Great language that every software engineer should know… by (August 9th, 2023) ► A false denial.
- CPython without a global interpreter lock by (August 9th, 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 (November 6th, 2023) ► An evaluation of Ruff.
- What the Heck Are Monads?! by (November 10th, 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 (December 3rd, 2023) ► Some random pandas features.
- FREE Cloud Database Every SWE Student Needs To Know (+ basic usage with Python & Pymongo) by (January 28th, 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 (February 1st, 2024) ► A presentation/advertisement of ApiLogicServer.
- Mesop - Google's New UI Maker by (June 18th, 2024) ► A presentation of Mesop, a library for quickly creating UIs for ML/AI prototypes.
- Will Python SKIP these versions? by (June 24th, 2024) ► Python may change its version numbering system.
- PyPI now supports digital attestations by (November 14th, 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 (December 2nd, 2024) ► is doing some signal processing.
- Fixes for datetime UTC warnings in Python by (December 12th, 2024) ► The title says it all.
- URL-addressable Pyodide Python environments by (February 13th, 2025) ► is doing some proselytising for Pixode 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 (March 4th, 2025) ► A too succinct introduction to NumPy and Pandas.
- 17 Reasons Why Gradio Isn't Just Another UI Library by and (April 16th, 2025) ► A long, boring, biased list of Gradio advantages.
- Introducing Datasette for Newsrooms by (April 24th, 2025) ► proposes a Datasette offer for journalists.
- Python's pattern matching is EXCEPTIONAL by (April 29th, 2025) ► A presentation of pattern matching.
- Python's 5 BIGGEST gotchas↓ by (June 2nd, 2025) ► Only one of the five "gotchas" is really one, the other ones are just basic classic programming.
- python-importtime-graph by (June 20th, 2025) ► Using python-importtime-graph to generate an unreadable report of the time spent to import each module.
-
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 (February 15th, 2024) ► Yet another Python package manager.
-
Is "uv" the FUTURE of Python package management? by (February 19th, 2024) ► A
pip
vs.uv
performance comparison. -
uv: Unified Python packaging by (August 20th, 2024) ► This article gives the long list of
uv
features as they stand with the 0.3 release. -
uv: Unified Python packaging by (August 20th, 2024) ► A short summary of
uv
0.3 new features. -
Rye and uv: August is Harvest Season for Python Packaging by (August 21st, 2024) ► advices Python projects to promote a single management tool:
uv
. -
UV - A modern python project and dependency manager by (August 23rd, 2024) ► Yet another presentation of
uv
. -
uv under discussion on Mastodon by (September 8th, 2024) ► The feeling of some important Python contributors about the fact that
uv
is created by a private start-up. -
sudoku-in-python-packaging by (October 21st, 2024) ► Exploiting Python package management to solve Sudoku puzzles and comparing the poor performance of
pip
with the correct one ofuv
. -
uv: An Extremely Fast Python Package Manager by (October 23rd, 2024) ► A detailed technical description of some aspects of
uv
. - Trying out Python packages with ipython and uvx by (February 13th, 2025) ► The title says it all.
-
UV one year on: the FUTURE of Python is NOW by (February 24th, 2025) ► A presentation of
uv
features and performance.
-
Pydantic
- Pydantic Tutorial • Solving Python's Biggest Problem by (September 18th, 2023) ► A short presentation of Pydantic.
- Pydantic is OP, here's why by (July 1st, 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 (February 3rd, 2025) ► A short presentation of Pydantic.
-
FastAPI
- FastAPI for AI Engineers - Getting Started in 15 Minutes by (May 22nd, 2025) ► A slow presentation of FastAPI.
-
Polars
- SDS 815: Polars: Faster DataFrame Ops, with Marco Gorelli (⧉) by and (September 3rd, 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 (May 6th, 2025) ► This interview is a messy list of random subjects, there is little information about Polars.
-
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 (July 21st, 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 (December 19th, 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 (January 30th, 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 (November 18th, 2021) ► Structural pattern matching, better error messages, parameter specification variables…
-
3.13
- New Features You Need To Know In Python 3.12 by (September 29th, 2023) ► The title says it all.
-
ALL Python 3.12's major typing improvements by (October 9th, 2023) ► PEP 695 definition of generic classes and types, PEP 698 the
@override
decorator, and PEP 692**kwargs
typing.
-
3.13
- Python now has COLOURED tracebacks by (January 15th, 2024) ► Python 3.13 will have better error reports and stack traces.
- What's new in Python 3.13? by (May 7th, 2024) ► The title says it all.
- This Python REPL *FEATURE* is a Game-Changer | Python 3.13 Update by (September 18th, 2024) ► The improvements of the REPL.
- What's New In Python 3.13 by (October 7th, 2024) ► ’s short notes on this new Python version.
- Python 3.13 release: bye GIL, hi JIT, new REPL! by (October 7th, 2024) ► A summary of what is and what is not in Python 3.13.
-
3.14
- What's coming in Python 3.14? by (October 29th, 2024) ► The scope of 3.14 as currently known.
-
python-build-standalone now has Python 3.14.0a5 by (February 13th, 2025) ► You can experiment with a first version of the tail-calling interpreter using
uv
. - What's new in Python 3.14? by (May 6th, 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 (May 8th, 2025) ►
return
,break
, orcontinue
in afinally
block will now generate a syntax warning. - PyREPL now has SYNTAX HIGHLIGHTING + colour theming?! by (May 12th, 2025) ► How to customise the colours of the colourised REPL introduced in 3.14.
- Python's new T-STRINGS (template strings) by (May 19th, 2025) ► A presentation of Template Strings.
-
Python MASSIVELY improved errors in Python 3.14 by (May 26th, 2025) ► List of exceptions in an
except
block do not require brackets (PEP 758) andreturn
in afinally
generates a warning (PEP 765). - Python 3.14 is introducing a new type of interpreter…↓ by (June 10th, 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 (July 21st, 2025) ► A very short presentation of
python -m asyncio ps PID
andpython -m asyncio pstree PID
to display the asyncio tasks of a running process.
-
Tutorials
- This Is Why Python Data Classes Are Awesome by (March 25th, 2022) ► An introduction to Data Classes.
- Python Decorators: The Complete Guide by (January 27th, 2023) ► The title says it all.
- How to Build a Complete Python Package Step-by-Step by (March 3rd, 2023) ► How to build a package and publish it on PyPI.
- How to Create and Use Virtual Environments in Python With Poetry by (March 24th, 2023) ► The title says it all.
- 15 Python Libraries You Should Know About by (September 15th, 2023) ► A list of libraries shortly described.
- 7 Things I Never Knew About Python Until Recently (Part 1)↓ by (October 22nd, 2023) ► Some random and rather useless Python features.
- ↪12 Things I Never Knew About Python Until Recently (Part 2)↓ by (November 2nd, 2023) ► The continuation of the previous video.
- 7 Levels Of Creating Classes in Python (Easy To Difficult To Ridiculous) by (October 28th, 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 (November 5th, 2023) ► How to write unreadable code.
- 13 Cool Ways to Use F-Strings in Python (Reducing Pain of Manipulating Strings) by (November 9th, 2023) ► Some miscellaneous f-string features.
- 10 Built-in Python Functions You CANNOT Miss Out On (else coding could be quite painful) by (November 21st, 2023) ► Some miscellaneous built-in functions.
- 7 Things I Recently Knew About Python Classes & Object-Oriented Programming in Python by (December 1st, 2023) ► Some less known Class features.
-
9 Pip Commands That Make Your Life Easier (And Less Painful) by (December 2nd, 2023) ► The very basics of
pip
. - 9 things I Never Knew About Python Functions Until Recently by (December 7th, 2023) ► Miscellaneous Python features.
- 7 Things I Only Recently Knew About print() in Python by (December 8th, 2023) ► Some print options and the ANSI escape sequences.
- 6 Things I Never Knew About Python LOOPS Until Recent Years by (December 10th, 2023) ► Some rather common loop features.
- 5 Things I Never Knew About EXCEPTIONS in Python (Until Recently) by (December 13th, 2023) ► Some lesser-known exception features.
- 6 Things I Never Knew About IMPORTS in Python Until Recently by (December 15th, 2023) ► The title says it all.
- Number Triangles (Can You Solve This In ONE Line? 1) by (January 5th, 2024) ► Some stupid list comprehensions.
- 7 Things I Never Knew About Decorators (Python) Until Recently by (February 3rd, 2024) ► A presentation of decorators.
-
What are these (/ and *) parameters in function? 2MinutesPy by (April 1st, 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 (March 25th, 2025) ► The Walrus Operator.
- Sets are absolutely CRACKED in Python by (June 9th, 2025) ► The basics of Sets.
- Object-oriented Programming in Python...↓ by (June 28th, 2025) ► The most basic introduction to Object Orientation.
-
Learn Python with Pj!
- Learn Python with Pj! Part 1 - Getting started by (February 8th, 2022) ► A wannabe developer is discovering Python.
- ↪Learn Python with Pj! Part 2 - Lists and loops by (March 1st, 2022) ► The title says it all.
- ↪Learn Python with Pj! Part 3 - Functions and strings by (April 4th, 2022) ► The title says it all.
- ↪Learn Python with Pj! Part 4 - Dictionaries and Files by (May 5th, 2022) ► The title says it all.
- ↪Learn Python with Pj! Part 5 - Build a hashtag tracker with the Twitter API by (June 1st, 2022) ► The guy finishes with the usual simple program to process tweets.