Skip to content
— CH. 1 · INTRODUCTION —

Python (programming language)

10 min listen · Ch. 1 of 8
8 sections
  • Python is a programming language that Guido van Rossum began building in the late 1980s while working at Centrum Wiskunde and Informatica in the Netherlands. What is unusual about Python is that its name has nothing to do with snakes. Van Rossum was a fan of the British comedy group Monty Python, and he wanted the language to feel fun. That playful spirit shaped everything from its documentation to the example variable names that Python programmers still use today.

    Python grew from frustration. Van Rossum had worked on a language called ABC, and he found its approach limiting. He wanted something different: a small, clean core with a large library of ready-made tools, and an interpreter that other software could extend easily. What he built became one of the most widely used programming languages on the planet. The questions worth asking are: how did a hobbyist project from the Netherlands end up teaching millions of people to code, and what design choices made that happen?

  • ABC was the language that made Python necessary. Van Rossum had worked on ABC at CWI, and he watched it represent a philosophy he found deeply wrong: build everything into the language itself, make it monolithic and self-contained. ABC was inspired by a language called SETL, and it was capable of handling certain kinds of errors and interacting with an operating system called Amoeba. But Van Rossum's frustration with ABC's opposite approach, packing all functionality into one core, is what pointed him toward Python's defining characteristic.

    Python implementation began in December 1989. Van Rossum designed Python to be extensible through modules rather than bloated at its center. That single architectural decision meant developers could add capabilities to Python without touching the language itself. It also made Python practical as a way to add programmable interfaces to software that already existed. Van Rossum released the first public version, Python 0.9.0, in 1991. The name, borrowed from Monty Python, signaled that this was not going to be another dry academic exercise.

  • For nearly three decades, Van Rossum held an unusual title: Benevolent Dictator for Life. The Python community bestowed it on him to describe the reality of how the language was governed. He was the chief decision-maker, and he held that authority alone. Then, on the 12th of July 2018, he announced his permanent vacation from those responsibilities.

    His departure was not entirely peaceful. Van Rossum resigned specifically after a conflict over adding what is called the assignment expression operator to Python 3.8. The Python community had debated this feature intensely, and the conflict made him step back entirely. In January 2019, active Python core developers elected a five-member Steering Council to lead the project going forward. Van Rossum himself has since come out of retirement and refers to himself as BDFL-emeritus. The conflict over that one operator illustrates something real about Python's philosophy: even small additions to the language face serious scrutiny, because Python's culture treats simplicity as a value worth defending.

  • Tim Peters wrote a document called the Zen of Python, formalized as PEP 20, which distills the language's core philosophy into a set of aphorisms. Among them: explicit is better than implicit; simple is better than complex; readability counts; there should be one, and preferably only one, obvious way to do it. These are not rules enforced by the compiler. They are guidelines, and Python has received persistent criticism for violating them anyway.

    Alex Martelli, a Fellow at the Python Software Foundation and author of Python books, captured the cultural standard bluntly. In Pythonic culture, he wrote, calling something clever is not a compliment. The community coined the term pythonic to describe code that uses Python idioms well, reads naturally, and conforms to the language's minimalist values. However, practical pressures push against this. Python provides at least three ways to format a string literal, with no authoritative guidance on which to choose. The Zen, as the community acknowledges, describes an aspiration rather than an achieved reality. Python even uses the placeholder words spam and eggs in official documentation as a tribute to a Monty Python sketch about spam, rather than the conventional foo and bar used elsewhere in programming.

  • Python 2.0 arrived on the 16th of October 2000, bringing list comprehensions, cycle-detecting garbage collection, reference counting, and Unicode support. For years, Python 2 was the version the world used. Then Python 3.0 was released on the 3rd of December 2008, and it introduced a break that the community spent over a decade managing.

    Python 3 was not backward-compatible with Python 2. The end-of-life for Python 2.7 was first set for 2015, then postponed to 2020. The reason for that postponement was practical: an enormous body of existing code could not easily be ported forward. Python 2.7.18, released in 2020, was the final release in the Python 2 line. Even after official support ended, an alternative implementation called PyPy continued to support Python 2.7, adding backported security updates under the version designation 2.7.18+. Today, the Python Software Foundation actively supports versions 3.10 through 3.14. Since November 2025, Python 3.10 has been the oldest maintained branch.

  • Most programming languages use curly brackets to define where a block of code begins and ends. Python does not. It uses indentation. An increase in indentation signals the start of a new block; a decrease signals the end. The recommended indent size is four spaces. This rule, sometimes called the off-side rule, means that in Python, the visual structure of a program and its logical structure are identical.

    Python also enforces a strict boundary between expressions and statements. In languages such as Common Lisp, Scheme, or Ruby, that line is blurry. Python keeps them separate, which leads to some duplication: for-loops and list comprehensions both handle iteration, and if-blocks and conditional expressions both handle branching. The payoff is that Python code tends to be readable by people who did not write it. Python forbids certain operations by design: it has no do-while loops, which Van Rossum considered harmful. It also does not support tail call optimization or first-class continuations, and Van Rossum stated that the language never will. These refusals are deliberate. Every omission is a readability decision.

  • CPython is the reference implementation, written in C and meeting the C11 standard since version 3.11. It compiles Python programs into intermediate bytecode, which a virtual machine then executes. CPython's energy usage for typical code is worse than C by a factor of 75.88, and its throughput is worse than C by a factor of 71.9. Memory usage runs about 2.4 times higher than C. These are real costs, and the Python ecosystem has built a range of alternatives in response.

    PyPy uses just-in-time compilation and often improves speed significantly compared to CPython, though it does not support every C-based library. Codon uses an ahead-of-time compiler and claims speedups of ten to a hundred times over CPython for suitable code. MicroPython and CircuitPython are optimized for microcontrollers, including the Lego Mindstorms EV3. RustPython, written in Rust, aims for compatibility with CPython including its C-level interface, and is already used in projects such as GrepTimeDB and Ruff. Nokia released PyS60, a Python 2 interpreter for Series 60 mobile phones, in 2005. Google launched a project called Unladen Swallow in 2009 with the goal of speeding up the Python interpreter five-fold using LLVM, though that project is now unsupported. The breadth of these efforts reflects a persistent tension: Python's design prioritizes developer clarity over machine speed, and that tradeoff invites constant reinvention.

  • Since 2003, Python has consistently ranked among the top ten most popular programming languages in the TIOBE Programming Community Index, which bases its rankings on searches across 24 platforms. The Python Package Index, known as PyPI, contains over 614,339 packages. Machine learning has become one of Python's most visible domains, drawing in practitioners who rely on libraries that often run C or Fortran underneath to deliver performance the Python interpreter cannot.

    Python is widely taught as an introductory programming language, which means generations of programmers wrote their first function using the def keyword and their first loop with a for statement. Languages including ECMAScript, JavaScript, Julia, Go, and Mojo have drawn direct influence from Python's design. Julia was designed to be as usable for general programming as Python. Go was designed for the speed of working in a dynamic language like Python. Python 3.15, currently in alpha, is expected to reach stable release in October 2026, and it adds the ability to lazily import modules using a new lazy keyword. The project that Van Rossum started in December 1989 is still being actively extended, one annual release at a time.

Up Next

Common questions

Who created Python programming language and when?

Guido van Rossum created Python. He began working on it in the late 1980s at Centrum Wiskunde and Informatica in the Netherlands, with implementation starting in December 1989. He released the first public version, Python 0.9.0, in 1991.

Why is Python named after Monty Python?

Python is named after the British comedy group Monty Python, whose work Guido van Rossum enjoyed while developing the language. The name reflects his intention to make the language feel fun. Monty Python references appear throughout official Python documentation and culture, including the use of spam and eggs as example variable names.

What is the difference between Python 2 and Python 3?

Python 3.0, released on the 3rd of December 2008, introduced a major revision that was not fully backward-compatible with Python 2. Python 2.7's official end-of-life was delayed from 2015 to 2020 because of the large volume of existing code that could not easily be ported forward. Python 2.7.18, released in 2020, was the final Python 2 release.

What does Benevolent Dictator for Life mean in Python?

Benevolent Dictator for Life, abbreviated BDFL, was a title the Python community gave to Guido van Rossum to describe his role as the language's chief decision-maker. He held that title from the project's founding until the 12th of July 2018, when he announced his permanent vacation from those responsibilities. In January 2019, a five-member Steering Council was elected to replace his single-person authority.

Why does Python use indentation instead of curly brackets?

Python uses whitespace indentation to delimit code blocks so that the visual structure of a program matches its logical structure exactly. An increase in indentation signals the start of a new block; a decrease signals the end. This feature, sometimes called the off-side rule, is a deliberate design choice tied to Python's emphasis on readability. The recommended indent size is four spaces.

How popular is Python and how many packages does it have?

Since 2003, Python has consistently ranked among the top ten most popular programming languages in the TIOBE Programming Community Index, which ranks languages based on searches across 24 platforms. The Python Package Index contains over 614,339 packages. Python is widely taught as an introductory programming language and has gained extensive use in the machine learning community.

All sources

195 references cited across the entry

  1. 2Python 0.9.1 part 01/21alt.sources archives
  2. 4PEP 11 – CPython platform supportMartin von Löwis et al.
  3. 8PEP 488 – Elimination of PYO filesBrett Cannon — 20 February 2015
  4. 9PEP 273 – Import Modules from Zip ArchivesJames C. Ahlstrom — 11 October 2001
  5. 10PEP 561 – Distributing and Packaging Type InformationEmma Harper Smith — 9 September 2017
  6. 11PEP 397 – Python launcher for WindowsMark Hammond et al. — 15 March 2011
  7. 12PEP 0441 – Improving Python ZIP Application SupportDaniel Holth et al. — 30 March 2013
  8. 18Perl and Python influences in JavaScriptAxel Rauschmayer — 24 February 2013
  9. 20Why We Created JuliaJeff Bezanson et al. — February 2012
  10. 27JournalBridging the Cyber-Analysis Gap: The Democratization of Data ScienceJohn Healy et al. — 2017
  11. 28JournalCurriculum for an Introductory Computer Science Course: Identifying Recommendations from Academia and IndustrySimon G. Sultana et al. — 2017
  12. 29PEP 8100 – January 2019 Steering Council electionNathaniel J. Smith et al. — Python Software Foundation
  13. 30PEP 13 – Python Language GovernanceThe Python core team and community
  14. 31BookPython for kids: a playful introduction to programmingJason R. Briggs et al. — No Starch Press — 2013
  15. 36PyPy v7.3.14 releasemattip — 25 December 2023
  16. 37Python 2.7.18, the last release of Python 2Benjamin Peterson — 20 April 2020
  17. 41Python changes 2014+Mark Lutz — January 2022
  18. 45Python 3.15.0 beta 2 is here!Hugo van Kemenade — June 2, 2026
  19. 50BookIntroduction to Computation and Programming Using Python: With Application to Understanding DataJohn V. Guttag — MIT Press — 12 August 2016
  20. 51PEP 8 – Style Guide for Python CodeGuido van Rossum et al.
  21. 62PEP 483 – The Theory of Type HintsGuido van Rossum et al.
  22. 64typing — Support for type hintsPython Software Foundation
  23. 76PyPI2025-03-13
  24. 79IPython DocumentationAugust 29, 2025
  25. 82Enthought CanopyDoug Harper — Western Kentucky University — Spring 2024
  26. 92BookProceedings of the 10th ACM SIGPLAN International Conference on Software Language EngineeringRui Pereira et al. — Association for Computing Machinery — 2017-10-23
  27. 94Download and InstallThe PyPy Team — 2019-12-28
  28. 96MIT-Created Compiler Speeds up Python CodeLoraine Lawson — 2023-03-14
  29. 98NewsPyston returns from the dead to speed PythonSerdar Yegulalp — 29 October 2020
  30. 100Snek Lang: feels like Python on ArduinosRafael Aroca — 2021-08-07
  31. 102Ready to find out if you're git famous?Michael Kennedy (@mkennedy)
  32. 104RustPython/RustPythonRustPython Dev — 2026-05-05
  33. 105Python on the Nokia N90029 April 2010
  34. 111JournalPythran: enabling static optimization of scientific Python programsSerge Guelton et al. — IOP Publishing — 16 March 2015
  35. 113google/grumpy10 April 2020
  36. 115NewsGoogle's Grumpy code makes Python GoThomas Claburn in San Francisco
  37. 119Performance of Python runtimes on a non-numeric scientific codeRiccardo Murri — 2013
  38. 122Moving Python's bugs to GitHub LWN.netJake Edge — 23 February 2022
  39. 126Changing the Python release cadence LWN.netJake Edge — 23 October 2019
  40. 127BookPythonChris Fehily — Peachpit Press — 2002
  41. 128BookIntroducing PythonBill Lubanovic — Sebastopol, CA : O'Reilly Media — 2014
  42. 129AcknowledgementsCharles Esterbrook — Cobra Language
  43. 135What is Mojo Programming Language?Michael Spencer — 4 May 2023
  44. 137Chris Lattner's HomepageChris Lattner — Chris Lattner — 3 June 2014
  45. 139Why was Python created in the first place?Python Software Foundation
  46. 140Interview with Guido van Rossum (July 1998)Andrew M. Kuchling — 22 December 2006
  47. 141JournalAn Introduction to Python for UNIX/C ProgrammersGuido van Rossum — 1993
  48. 142ClassesPython Software Foundation
  49. 143Call By ObjectFredrik Lundh
  50. 144The Python 2.3 Method Resolution OrderMichele Simionato — Python Software Foundation
  51. 145Functional Programming HOWTOA. M. Kuchling — Python Software Foundation
  52. 146PEP 238 – Changing the Division OperatorMoshe Zadka et al. — Python Software Foundation — 11 March 2001
  53. 147PEP 255 – Simple GeneratorsNeil Schemenauer et al. — Python Software Foundation — 18 May 2001
  54. 148More Control Flow ToolsPython Software Foundation
  55. 151The Making of PythonBill Venners — Artima — 13 January 2003
  56. 152A Brief Timeline of PythonGuido van Rossum — 20 January 2009
  57. 153SETL (was: Lukewarm about range literals)Guido van Rossum — 29 August 2000
  58. 154What's New in Python 2.0A. M. Kuchling et al. — Python Software Foundation — 16 October 2000
  59. 1563.3. Special method namesPython Software Foundation
  60. 161PEP 20 – The Zen of PythonTim Peters — Python Software Foundation — 19 August 2004
  61. 162BookPython Cookbook, 2nd EditionAlex Martelli et al. — O'Reilly Media — 2005
  62. 163Python CultureJanuary 21, 2014
  63. 164PEP 1 – PEP Purpose and GuidelinesBarry Warsaw et al. — Python Software Foundation — 13 June 2000
  64. 165Guido, Some Guys, and a Mailing List: How Python is DevelopedBrett Cannon — Python Software Foundation
  65. 167PEP 6 – Bug Fix ReleasesAahz et al. — Python Software Foundation — 15 March 2001
  66. 168Python BuildbotPython Software Foundation
  67. 169Why is it called Python?Docs.python.org
  68. 170Whetting Your AppetitePython Software Foundation
  69. 174Tail Recursion EliminationGuido van Rossum — Neopythonic.blogspot.be — 22 April 2009
  70. 175Language Design Is Not Just Solving PuzzlesGuido van Rossum — Artima — 9 February 2006
  71. 176PEP 342 – Coroutines via Enhanced GeneratorsGuido van Rossum et al. — Python Software Foundation — 10 May 2005
  72. 177PEP 380Python.org
  73. 178PEP 289 – Generator ExpressionsRaymond Hettinger — Python Software Foundation — 30 January 2002
  74. 179PEP 308 – Conditional ExpressionsGuido van Rossum et al. — Python Software Foundation — 7 February 2003
  75. 181PEP 237 – Unifying Long Integers and IntegersMoshe Zadka et al. — Python Software Foundation — 11 March 2001
  76. 185BookPython Essential ReferenceDavid M. Beazley — Addison-Wesley Professional — 2009
  77. 186BookThe C Programming LanguageBrian W. Kernighan et al. — 1988
  78. 187PEP 7 – Style Guide for C CodeGuido van Rossum — Python Software Foundation — 5 June 2001
  79. 188CPython byte codeDocs.python.org
  80. 194Plans for optimizing Python15 December 2009
  81. 196PEP 327 – Decimal Data TypeFacundo Batista — Python Software Foundation — 17 October 2003
  82. 197PEP 333 – Python Web Server Gateway Interface v1.0Phillip J. Eby — Python Software Foundation — 7 December 2003