{
  "id": "python",
  "name": "Python",
  "appeared": 1991,
  "creators": [
    "Guido van Rossum"
  ],
  "type": "scripting",
  "status": "alive",
  "tagline": "General-purpose language for scripts, automation, web backends and data analysis.",
  "born_from": "In December 1989 Guido van Rossum, a programmer on the Amoeba distributed operating system at CWI, started a hobby project to fill the week around Christmas. Amoeba needed a scripting language, and he wanted an interpreted language for writing and testing its administration scripts. He drew on ABC, a language he had worked on that was intended for non-technical users.",
  "reacts_to": [
    "abc",
    "c",
    "modula-3"
  ],
  "tradeoffs": {
    "memory": "refcount",
    "types": "dynamic",
    "run": "interpreted",
    "concurrency": [
      "threads",
      "async"
    ],
    "cost": "The global interpreter lock stops threads from running Python code at the same time, so CPU-heavy work needs processes or C extensions."
  },
  "slots": [
    {
      "slot": "scripts",
      "fit": "strong",
      "note": "The default language for system administration and automation scripts."
    },
    {
      "slot": "data",
      "fit": "strong",
      "note": "NumPy and the scientific stack built on it."
    },
    {
      "slot": "server",
      "fit": "strong",
      "note": "Django and Flask are the common web frameworks."
    },
    {
      "slot": "cli",
      "fit": "ok"
    },
    {
      "slot": "systems",
      "fit": "weak",
      "note": "CPython itself is written in C."
    },
    {
      "slot": "mobile",
      "fit": "weak"
    },
    {
      "slot": "browser",
      "fit": "none",
      "note": "Browsers run JavaScript, not Python."
    }
  ],
  "won_where": [
    {
      "what": "Dropbox published how it moved over one million lines of Python from Python 2 to Python 3 (2019)",
      "source": "https://dropbox.tech/application/incrementally-migrating-over-one-million-lines-of-code-from-python-2-to-python-3"
    },
    {
      "what": "NumPy, the fundamental package for scientific computing with Python",
      "source": "https://numpy.org/"
    }
  ],
  "alternatives": [
    "javascript",
    "go",
    "r"
  ],
  "timeline": [
    {
      "year": 1989,
      "what": "Guido van Rossum starts Python as a hobby project in the week around Christmas",
      "source": "https://www.python.org/doc/essays/foreword/"
    },
    {
      "year": 1991,
      "what": "Python 0.9.0 is released to the alt.sources newsgroup in February",
      "source": "https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html"
    },
    {
      "year": 2000,
      "what": "Python 2.0 is released on October 16",
      "source": "https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html"
    },
    {
      "year": 2008,
      "what": "Python 3.0 is released on December 3",
      "source": "https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html"
    },
    {
      "year": 2020,
      "what": "Python 2 reaches end of life on January 1",
      "source": "https://www.python.org/doc/sunset-python-2/"
    },
    {
      "year": 2023,
      "what": "PEP 703, Making the Global Interpreter Lock Optional in CPython, is accepted",
      "source": "https://peps.python.org/pep-0703/"
    }
  ],
  "links": {
    "website": "https://www.python.org/",
    "repo": "https://github.com/python/cpython",
    "docs": "https://docs.python.org/3/"
  },
  "pldb": "python",
  "sources": [
    "https://www.python.org/doc/essays/foreword/",
    "https://www.artima.com/articles/the-making-of-python",
    "https://www.linuxjournal.com/node/2959",
    "https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html",
    "https://www.python.org/doc/sunset-python-2/",
    "https://peps.python.org/pep-0703/",
    "https://dropbox.tech/application/incrementally-migrating-over-one-million-lines-of-code-from-python-2-to-python-3",
    "https://numpy.org/",
    "https://survey.stackoverflow.co/2025/technology/",
    "https://w3techs.com/technologies/details/cp-javascript/"
  ],
  "verified": false,
  "last_reviewed": "2026-10-30",
  "prose": "## Why it exists\n\nIn December 1989 Guido van Rossum, a programmer on the Amoeba distributed operating system at CWI, started a hobby project to fill the week around Christmas ([Guido's foreword to Programming Python](https://www.python.org/doc/essays/foreword/)). Amoeba needed a scripting language ([Artima, The Making of Python](https://www.artima.com/articles/the-making-of-python)), and he wanted an interpreted language for writing and testing its administration scripts ([Linux Journal interview](https://www.linuxjournal.com/node/2959)). He drew on ABC, a language he had worked on, which was intended for non-technical users. The first public release, version 0.9.0, went to the alt.sources newsgroup in February 1991 ([Guido's Python timeline](https://python-history.blogspot.com/2009/01/brief-timeline-of-python.html)).\n\n## What it trades away\n\nPython code is short and readable, and that comes at a cost in speed and parallelism. CPython, the reference implementation, has a global interpreter lock that stops threads from running Python code at the same time ([PEP 703](https://peps.python.org/pep-0703/)). CPU-heavy work therefore needs separate processes or C extensions. Dynamic typing has its own cost: type hints are optional and checked by external tools, so large codebases lean on those tools and on tests. The migration was slow too. Python 3.0 arrived in 2008, and Python 2 kept receiving support until January 1, 2020 ([python.org](https://www.python.org/doc/sunset-python-2/)).\n\n## Where it won\n\nPython won in scripting and data work. Dropbox's client had more than one million lines of Python logic, and in 2019 the company published how it moved that code to Python 3 ([Dropbox Tech](https://dropbox.tech/application/incrementally-migrating-over-one-million-lines-of-code-from-python-2-to-python-3)). NumPy calls itself the fundamental package for scientific computing with Python ([NumPy](https://numpy.org/)). In the 2025 Stack Overflow survey, 57.9 % of respondents used Python ([Stack Overflow](https://survey.stackoverflow.co/2025/technology/)). It never won the browser. Browsers run JavaScript, which 98.9 % of websites use on the client side ([W3Techs](https://w3techs.com/technologies/details/cp-javascript/)).",
  "url": "https://langwhy.dev/lang/python/",
  "markdown": "https://langwhy.dev/lang/python.md",
  "license": "CC0-1.0"
}