Skip to content
— CH. 1 · INTRODUCTION —

Python (programming language)

~7 min read · 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. 2webPython 0.9.1 part 01/21alt.sources archives
  2. 4webPEP 11 – CPython platform supportMartin von Löwis et al.
  3. 8webPEP 488 – Elimination of PYO filesBrett Cannon — 20 February 2015
  4. 9webPEP 273 – Import Modules from Zip ArchivesJames C. Ahlstrom — 11 October 2001
  5. 10webPEP 561 – Distributing and Packaging Type InformationEmma Harper Smith — 9 September 2017
  6. 11webPEP 397 – Python launcher for WindowsMark Hammond et al. — 15 March 2011
  7. 12webPEP 0441 – Improving Python ZIP Application SupportDaniel Holth et al. — 30 March 2013
  8. 18webPerl and Python influences in JavaScriptAxel Rauschmayer — 24 February 2013
  9. 19webChapter 3: The Nature of JavaScript; InfluencesAxel Rauschmayer — O'Reilly
  10. 20webWhy We Created JuliaJeff Bezanson et al. — February 2012
  11. 26webTIOBE IndexTIOBE
  12. 27journalBridging the Cyber-Analysis Gap: The Democratization of Data ScienceJohn Healy et al. — 2017
  13. 28journalCurriculum for an Introductory Computer Science Course: Identifying Recommendations from Academia and IndustrySimon G. Sultana et al. — 2017
  14. 29webPEP 8100 – January 2019 Steering Council electionNathaniel J. Smith et al. — Python Software Foundation
  15. 30webPEP 13 – Python Language GovernanceThe Python core team and community
  16. 31bookPython for kids: a playful introduction to programmingJason R. Briggs et al. — No Starch Press — 2013
  17. 36webPyPy v7.3.14 releasemattip — 25 December 2023
  18. 37webPython 2.7.18, the last release of Python 2Benjamin Peterson — 20 April 2020
  19. 41webPython changes 2014+Mark Lutz — January 2022
  20. 45webPython 3.15.0 beta 2 is here!Hugo van Kemenade — June 2, 2026
  21. 50bookIntroduction to Computation and Programming Using Python: With Application to Understanding DataJohn V. Guttag — MIT Press — 12 August 2016
  22. 51webPEP 8 – Style Guide for Python CodeGuido van Rossum et al.
  23. 62webPEP 483 – The Theory of Type HintsGuido van Rossum et al.
  24. 64webtyping — Support for type hintsPython Software Foundation
  25. 73webWhat's New in Python 2.6Oct 29, 2013
  26. 76webPyPI2025-03-13
  27. 79webIPython DocumentationAugust 29, 2025
  28. 82webEnthought CanopyDoug Harper — Western Kentucky University — Spring 2024
  29. 92bookProceedings of the 10th ACM SIGPLAN International Conference on Software Language EngineeringRui Pereira et al. — Association for Computing Machinery — 2017-10-23
  30. 94webDownload and InstallThe PyPy Team — 2019-12-28
  31. 96webMIT-Created Compiler Speeds up Python CodeLoraine Lawson — 2023-03-14
  32. 98newsPyston returns from the dead to speed PythonSerdar Yegulalp — 29 October 2020
  33. 100webSnek Lang: feels like Python on ArduinosRafael Aroca — 2021-08-07
  34. 102webReady to find out if you're git famous?Michael Kennedy (@mkennedy)
  35. 104citationRustPython/RustPythonRustPython Dev — 2026-05-05
  36. 105webPython on the Nokia N90029 April 2010
  37. 106webBrython
  38. 111journalPythran: enabling static optimization of scientific Python programsSerge Guelton et al. — IOP Publishing — 16 March 2015
  39. 113webgoogle/grumpy10 April 2020
  40. 114webProjects
  41. 115newsGoogle's Grumpy code makes Python GoThomas Claburn in San Francisco
  42. 119conferencePerformance of Python runtimes on a non-numeric scientific codeRiccardo Murri — 2013
  43. 122webMoving Python's bugs to GitHub LWN.netJake Edge — 23 February 2022
  44. 126webChanging the Python release cadence LWN.netJake Edge — 23 October 2019
  45. 127bookPythonChris Fehily — Peachpit Press — 2002
  46. 128bookIntroducing PythonBill Lubanovic — Sebastopol, CA : O'Reilly Media — 2014
  47. 129webAcknowledgementsCharles Esterbrook — Cobra Language
  48. 135webWhat is Mojo Programming Language?Michael Spencer — 4 May 2023
  49. 136webGDScript
  50. 137webChris Lattner's HomepageChris Lattner — Chris Lattner — 3 June 2014
  51. 139webWhy was Python created in the first place?Python Software Foundation
  52. 140webInterview with Guido van Rossum (July 1998)Andrew M. Kuchling — 22 December 2006
  53. 141journalAn Introduction to Python for UNIX/C ProgrammersGuido van Rossum — 1993
  54. 142webClassesPython Software Foundation
  55. 143webCall By ObjectFredrik Lundh
  56. 144webThe Python 2.3 Method Resolution OrderMichele Simionato — Python Software Foundation
  57. 145webFunctional Programming HOWTOA. M. Kuchling — Python Software Foundation
  58. 146webPEP 238 – Changing the Division OperatorMoshe Zadka et al. — Python Software Foundation — 11 March 2001
  59. 147webPEP 255 – Simple GeneratorsNeil Schemenauer et al. — Python Software Foundation — 18 May 2001
  60. 148webMore Control Flow ToolsPython Software Foundation
  61. 151webThe Making of PythonBill Venners — Artima — 13 January 2003
  62. 152webA Brief Timeline of PythonGuido van Rossum — 20 January 2009
  63. 153mailing listSETL (was: Lukewarm about range literals)Guido van Rossum — 29 August 2000
  64. 154webWhat's New in Python 2.0A. M. Kuchling et al. — Python Software Foundation — 16 October 2000
  65. 155webPython Metaclasses: Who? Why? When?The Cain Gang Ltd.
  66. 156web3.3. Special method namesPython Software Foundation
  67. 159webPyDatalog
  68. 161webPEP 20 – The Zen of PythonTim Peters — Python Software Foundation — 19 August 2004
  69. 162bookPython Cookbook, 2nd EditionAlex Martelli et al. — O'Reilly Media — 2005
  70. 163webPython CultureJanuary 21, 2014
  71. 164webPEP 1 – PEP Purpose and GuidelinesBarry Warsaw et al. — Python Software Foundation — 13 June 2000
  72. 165webGuido, Some Guys, and a Mailing List: How Python is DevelopedBrett Cannon — Python Software Foundation
  73. 167webPEP 6 – Bug Fix ReleasesAahz et al. — Python Software Foundation — 15 March 2001
  74. 168webPython BuildbotPython Software Foundation
  75. 169webWhy is it called Python?Docs.python.org
  76. 170webWhetting Your AppetitePython Software Foundation
  77. 171webIn Python, should I use else after a return in an if block?Stack Exchange — 17 February 2011
  78. 174webTail Recursion EliminationGuido van Rossum — Neopythonic.blogspot.be — 22 April 2009
  79. 175webLanguage Design Is Not Just Solving PuzzlesGuido van Rossum — Artima — 9 February 2006
  80. 176webPEP 342 – Coroutines via Enhanced GeneratorsGuido van Rossum et al. — Python Software Foundation — 10 May 2005
  81. 177webPEP 380Python.org
  82. 178webPEP 289 – Generator ExpressionsRaymond Hettinger — Python Software Foundation — 30 January 2002
  83. 179webPEP 308 – Conditional ExpressionsGuido van Rossum et al. — Python Software Foundation — 7 February 2003
  84. 181webPEP 237 – Unifying Long Integers and IntegersMoshe Zadka et al. — Python Software Foundation — 11 March 2001
  85. 183citationround
  86. 184citationround
  87. 185bookPython Essential ReferenceDavid M. Beazley — Addison-Wesley Professional — 2009
  88. 186bookThe C Programming LanguageBrian W. Kernighan et al. — 1988
  89. 187webPEP 7 – Style Guide for C CodeGuido van Rossum — Python Software Foundation — 5 June 2001
  90. 188webCPython byte codeDocs.python.org
  91. 191webPyPy compatibilityPypy.org
  92. 194webPlans for optimizing Python15 December 2009
  93. 195webBuild a Rapid Web Development Environment for Python Server Pages and OraclePrzemyslaw Piotrowski — Oracle — July 2006
  94. 196webPEP 327 – Decimal Data TypeFacundo Batista — Python Software Foundation — 17 October 2003
  95. 197webPEP 333 – Python Web Server Gateway Interface v1.0Phillip J. Eby — Python Software Foundation — 7 December 2003