Dataslope logoDataslope

Python History

Where Python came from, why it looks the way it does, and the debates that shaped it

Python is a high-level, interpreted programming language created by Guido van Rossum and first released in February 1991. Guido was working at CWI (Centrum Wiskunde & Informatica) in the Netherlands and started Python as a hobby project over the 1989 Christmas holidays, aiming to create a successor to the ABC teaching language he had helped develop.

Why 'Python'?

The name has nothing to do with snakes. Guido was reading scripts from Monty Python's Flying Circus at the time and wanted a name that was "short, unique, and slightly mysterious." The community has run with the snake imagery ever since.

A visual timeline

Design philosophy

Python's design is deeply influenced by ABC, an earlier teaching language Guido helped build at CWI. The guiding ideas are captured in The Zen of Python (PEP 20), which you can read at any time by running import this.

Code Block
Python 3.13.2

The Zen prizes readability, explicitness, and one obvious way to do something. These values explain a lot of Python's choices, including its most famous one: significant whitespace.

Why indentation is part of the syntax

Most languages use braces or begin/end keywords for blocks; Python uses indentation. Guido's reasoning was that programmers indent code to communicate structure to humans anyway, so the compiler may as well trust that indentation rather than ignore it. The result is that badly indented code simply will not run, which keeps every Python codebase visually consistent.

Code Block
Python 3.13.2

The Python 2 to 3 transition

Python 3 was released in December 2008 and intentionally broke backward compatibility to fix long-standing language warts. The biggest changes were:

  • print became a function: print("hi") instead of print "hi".
  • All strings are Unicode by default; bytes is a separate type.
  • Integer division uses //; / always returns a float.
  • dict.keys(), range(), map(), and friends return views/ iterators instead of lists.

The decade-long migration

The transition took over a decade. Many libraries maintained dual Python 2/3 codebases using the six compatibility library or 2to3 converter. Python 2 was officially sunset on January 1, 2020. In 2025 there is no reason to write new code in Python 2. Every example in this course assumes Python 3.

From BDFL to Steering Council

Guido held the title of BDFL (Benevolent Dictator For Life) from Python's inception until July 2018, when he stepped down after a contentious debate over PEP 572 (the walrus operator :=). The community then adopted a governance model with a five-person Steering Council, elected annually by core developers. The council makes final decisions on Python Enhancement Proposals (PEPs) and oversees the direction of the language.

You can see the current Steering Council and all past members at python.org/dev/steering-council.

CPython and alternative implementations

The reference implementation of Python is CPython, written in C. When people say "Python", they almost always mean CPython. A few alternative implementations exist:

  • PyPy uses a just-in-time compiler and can be much faster on pure-Python workloads.
  • Jython runs on the JVM and can call Java libraries directly.
  • IronPython targets the .NET runtime.
  • MicroPython is a slim implementation for microcontrollers.
  • WebAssembly builds let CPython run directly in the browser, which is how the interactive code blocks on this site work — no install required.

The GIL and free-threading work

Python's Global Interpreter Lock (GIL) prevents multiple threads from executing Python bytecode simultaneously, which simplifies memory management but limits multi-core parallelism. Python 3.13 introduced an experimental free-threaded build (compile-time flag --disable-gil) that removes the GIL, allowing true parallel execution. This is groundbreaking work led by Sam Gross and will evolve over several releases.

Test your knowledge

QuestionSelect one

Who created Python?

Linus Torvalds

Guido van Rossum

Dennis Ritchie

James Gosling

QuestionSelect one

What is the origin of the name "Python"?

Named after the snake species

Named after the Greek oracle at Delphi

Named after Monty Python's Flying Circus

It stands for "Portable Interpreted Typed High-level Object Notation"

QuestionSelect one

Which of the following is a breaking change introduced in Python 3?

List comprehensions were added

print became a function instead of a statement

The def keyword was introduced

Indentation became significant

A small Python 3 challenge

One of the defining changes in Python 3 is that division / always returns a float, even when both operands are integers. In Python 2, 5 / 2 would return 2 (integer division). Let's verify the Python 3 behavior.

Challenge
Python 3.13.2
Verify Python 3 division

Compute 5 / 2 and assign the result to a variable named result. The hidden test will check that result is 2.5 (a float).

In the next page we will look at how to install Python locally and get a REPL up and running.

On this page