Python (programming language)
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
- 2Python 0.9.1 part 01/21alt.sources archives
- 4PEP 11 – CPython platform supportMartin von Löwis et al.
- 8PEP 488 – Elimination of PYO filesBrett Cannon — 20 February 2015
- 9PEP 273 – Import Modules from Zip ArchivesJames C. Ahlstrom — 11 October 2001
- 10PEP 561 – Distributing and Packaging Type InformationEmma Harper Smith — 9 September 2017
- 11PEP 397 – Python launcher for WindowsMark Hammond et al. — 15 March 2011
- 12PEP 0441 – Improving Python ZIP Application SupportDaniel Holth et al. — 30 March 2013
- 18Perl and Python influences in JavaScriptAxel Rauschmayer — 24 February 2013
- 19Chapter 3: The Nature of JavaScript; InfluencesAxel Rauschmayer — O'Reilly
- 20Why We Created JuliaJeff Bezanson et al. — February 2012
- 26TIOBE IndexTIOBE
- 27JournalBridging the Cyber-Analysis Gap: The Democratization of Data ScienceJohn Healy et al. — 2017
- 28JournalCurriculum for an Introductory Computer Science Course: Identifying Recommendations from Academia and IndustrySimon G. Sultana et al. — 2017
- 29PEP 8100 – January 2019 Steering Council electionNathaniel J. Smith et al. — Python Software Foundation
- 30PEP 13 – Python Language GovernanceThe Python core team and community
- 31BookPython for kids: a playful introduction to programmingJason R. Briggs et al. — No Starch Press — 2013
- 32PEP 373 – Python 2.7 Release ScheduleBenjamin Peterson
- 33PEP 466 – Network Security Enhancements for Python 2.7.xAlyssa Coghlan
- 35PEP 373 – Python 2.7 Release ScheduleBenjamin Peterson
- 36PyPy v7.3.14 releasemattip — 25 December 2023
- 37Python 2.7.18, the last release of Python 2Benjamin Peterson — 20 April 2020
- 41Python changes 2014+Mark Lutz — January 2022
- 43The most controversial Python 'walrus operator'Chetan Ambi — 2021-07-04
- 44The controversy behind the 'walrus operator' in PythonJeremy Grifski — 2020-05-24
- 45Python 3.15.0 beta 2 is here!Hugo van Kemenade — June 2, 2026
- 46Python string formatting best practicesDan Bader
- 50BookIntroduction to Computation and Programming Using Python: With Application to Understanding DataJohn V. Guttag — MIT Press — 12 August 2016
- 51PEP 8 – Style Guide for Python CodeGuido van Rossum et al.
- 55division
- 62PEP 483 – The Theory of Type HintsGuido van Rossum et al.
- 64typing — Support for type hintsPython Software Foundation
- 73What's New in Python 2.6Oct 29, 2013
- 75An introduction to Python for scientific computingScott Shell — 17 June 2014
- 76PyPI2025-03-13
- 79IPython DocumentationAugust 29, 2025
- 82Enthought CanopyDoug Harper — Western Kentucky University — Spring 2024
- 92BookProceedings of the 10th ACM SIGPLAN International Conference on Software Language EngineeringRui Pereira et al. — Association for Computing Machinery — 2017-10-23
- 94Download and InstallThe PyPy Team — 2019-12-28
- 96MIT-Created Compiler Speeds up Python CodeLoraine Lawson — 2023-03-14
- 98NewsPyston returns from the dead to speed PythonSerdar Yegulalp — 29 October 2020
- 100Snek Lang: feels like Python on ArduinosRafael Aroca — 2021-08-07
- 101Snekboard Controls LEGO Power Functions with CircuitPython or Snek Programming Languages (Crowdfunding) – CNX SoftwareJean-Luc Aufranc (CNXSoft) — 2020-01-16
- 102Ready to find out if you're git famous?Michael Kennedy (@mkennedy)
- 103The Snek Programming Language: A Python-inspired Embedded Computing LanguageKeith Packard — 2022-12-20
- 104RustPython/RustPythonRustPython Dev — 2026-05-05
- 105Python on the Nokia N90029 April 2010
- 106Brython
- 111JournalPythran: enabling static optimization of scientific Python programsSerge Guelton et al. — IOP Publishing — 16 March 2015
- 113google/grumpy10 April 2020
- 114Projects
- 115NewsGoogle's Grumpy code makes Python GoThomas Claburn in San Francisco
- 118Jython FAQ
- 119Performance of Python runtimes on a non-numeric scientific codeRiccardo Murri — 2013
- 122Moving Python's bugs to GitHub LWN.netJake Edge — 23 February 2022
- 124Programming languages: Why Python 4.0 might never arrive, according to its creatorOwen Hughes — 2021-05-24
- 126Changing the Python release cadence LWN.netJake Edge — 23 October 2019
- 127BookPythonChris Fehily — Peachpit Press — 2002
- 128BookIntroducing PythonBill Lubanovic — Sebastopol, CA : O'Reilly Media — 2014
- 129AcknowledgementsCharles Esterbrook — Cobra Language
- 130Proposals: iterators and generators ES4 Wikiwiki.ecmascript.org
- 131NewsGoogle's Go: A New Programming Language That's Python Meets C++Jason Kincaid — 10 November 2009
- 133Mojo language marries Python and MLIR for AI developmentPaul Krill — 4 May 2023
- 135What is Mojo Programming Language?Michael Spencer — 4 May 2023
- 136GDScript
- 137Chris Lattner's HomepageChris Lattner — Chris Lattner — 3 June 2014
- 139Why was Python created in the first place?Python Software Foundation
- 140Interview with Guido van Rossum (July 1998)Andrew M. Kuchling — 22 December 2006
- 141JournalAn Introduction to Python for UNIX/C ProgrammersGuido van Rossum — 1993
- 142ClassesPython Software Foundation
- 143Call By ObjectFredrik Lundh
- 144The Python 2.3 Method Resolution OrderMichele Simionato — Python Software Foundation
- 145Functional Programming HOWTOA. M. Kuchling — Python Software Foundation
- 146PEP 238 – Changing the Division OperatorMoshe Zadka et al. — Python Software Foundation — 11 March 2001
- 147PEP 255 – Simple GeneratorsNeil Schemenauer et al. — Python Software Foundation — 18 May 2001
- 148More Control Flow ToolsPython Software Foundation
- 149BookPractical JRuby on Rails Web 2.0 Projects: bringing Ruby on Rails to the Java platformOla Bini — APress — 2007
- 151The Making of PythonBill Venners — Artima — 13 January 2003
- 152A Brief Timeline of PythonGuido van Rossum — 20 January 2009
- 153SETL (was: Lukewarm about range literals)Guido van Rossum — 29 August 2000
- 154What's New in Python 2.0A. M. Kuchling et al. — Python Software Foundation — 16 October 2000
- 155Python Metaclasses: Who? Why? When?The Cain Gang Ltd.
- 1563.3. Special method namesPython Software Foundation
- 159PyDatalog
- 1606.5 itertools – Functions creating iterators for efficient loopingDocs.python.org
- 161PEP 20 – The Zen of PythonTim Peters — Python Software Foundation — 19 August 2004
- 162BookPython Cookbook, 2nd EditionAlex Martelli et al. — O'Reilly Media — 2005
- 163Python CultureJanuary 21, 2014
- 164PEP 1 – PEP Purpose and GuidelinesBarry Warsaw et al. — Python Software Foundation — 13 June 2000
- 165Guido, Some Guys, and a Mailing List: How Python is DevelopedBrett Cannon — Python Software Foundation
- 166Python-Dev Release Schedules (was Stability & change)Neal Norwitz — 8 April 2002
- 167PEP 6 – Bug Fix ReleasesAahz et al. — Python Software Foundation — 15 March 2001
- 168Python BuildbotPython Software Foundation
- 169Why is it called Python?Docs.python.org
- 170Whetting Your AppetitePython Software Foundation
- 171In Python, should I use else after a return in an if block?Stack Exchange — 17 February 2011
- 172Is Python a good language for beginning programmers?Python Software Foundation
- 173Myths about indentation in PythonSecnetix.de
- 174Tail Recursion EliminationGuido van Rossum — Neopythonic.blogspot.be — 22 April 2009
- 175Language Design Is Not Just Solving PuzzlesGuido van Rossum — Artima — 9 February 2006
- 176PEP 342 – Coroutines via Enhanced GeneratorsGuido van Rossum et al. — Python Software Foundation — 10 May 2005
- 177PEP 380Python.org
- 178PEP 289 – Generator ExpressionsRaymond Hettinger — Python Software Foundation — 30 January 2002
- 179PEP 308 – Conditional ExpressionsGuido van Rossum et al. — Python Software Foundation — 7 February 2003
- 181PEP 237 – Unifying Long Integers and IntegersMoshe Zadka et al. — Python Software Foundation — 11 March 2001
- 182Why Python's Integer Division Floors24 August 2010
- 183round
- 184round
- 185BookPython Essential ReferenceDavid M. Beazley — Addison-Wesley Professional — 2009
- 186BookThe C Programming LanguageBrian W. Kernighan et al. — 1988
- 187PEP 7 – Style Guide for C CodeGuido van Rossum — Python Software Foundation — 5 June 2001
- 188CPython byte codeDocs.python.org
- 190An Interview with Guido van RossumOreilly.com
- 191PyPy compatibilityPypy.org
- 192speed comparison between CPython and PypySpeed.pypy.org
- 194Plans for optimizing Python15 December 2009
- 195Build a Rapid Web Development Environment for Python Server Pages and OraclePrzemyslaw Piotrowski — Oracle — July 2006
- 196PEP 327 – Decimal Data TypeFacundo Batista — Python Software Foundation — 17 October 2003
- 197PEP 333 – Python Web Server Gateway Interface v1.0Phillip J. Eby — Python Software Foundation — 7 December 2003
- 198MagazineGuido van Rossum Stepping Down from Role as Python's Benevolent Dictator For LifeCarlie Fairchild — 12 July 2018