<!--
Source: Wikipedia — "History of Python"
URL: https://en.wikipedia.org/wiki/History_of_Python
License: Creative Commons Attribution-ShareAlike 3.0 Unported (CC-BY-SA 3.0)
https://creativecommons.org/licenses/by-sa/3.0/
Retrieved: 2026-01-01 for demo corpus use.
-->

# History of the Python Programming Language

Python is a high-level, general-purpose programming language. Its design philosophy emphasises
code readability using significant indentation. Python is dynamically typed and garbage-collected.

## Origins (Late 1980s)

Python was conceived in the late 1980s by Guido van Rossum at Centrum Wiskunde & Informatica
(CWI) in the Netherlands as a successor to the ABC programming language. Van Rossum began
working on Python in December 1989, and the first version (0.9.0) was published to the
alt.sources Usenet group in February 1991.

The name "Python" was chosen by Van Rossum as a tribute to the BBC television comedy series
"Monty Python's Flying Circus", not as a reference to the reptile.

## Python 1 (1994)

Python 1.0 was released in January 1994. New features included lambda, map, filter, and reduce
functions. Version 1.4 added keyword arguments and built-in support for complex numbers.

## Python 2 (2000)

Python 2.0 was released on 16 October 2000. The major new feature was a cycle-detecting garbage
collector and support for Unicode. Python 2 also introduced list comprehensions, a feature
borrowed from the functional programming languages SETL and Haskell.

Python 2 was supported until January 1, 2020, when support officially ended. Users were
strongly encouraged to migrate to Python 3.

## Python 3 (2008)

Python 3.0 was released on 3 December 2008. It was a major, backwards-incompatible revision.
The motivation was to "fix" early design oversights, particularly around Unicode handling,
the print function, and integer division.

Key changes in Python 3 included: print became a function (not a statement), integer division
always returns a float when appropriate (`/`), and text strings are always Unicode.

## Python 3.5–3.12 (2015–2023)

- **3.5 (2015)**: Added async/await syntax for coroutines (PEP 492)
- **3.6 (2016)**: f-strings introduced (PEP 498), typed dicts
- **3.8 (2019)**: Walrus operator (`:=`) introduced (PEP 572)
- **3.10 (2021)**: Structural pattern matching (PEP 634), match/case statements
- **3.12 (2023)**: Per-interpreter GIL (PEP 684), improved error messages
