Code
Code
Guido van Rossum began working on Python in the late 1980s as a successor to the ABC programming
language and first released it in 1991 as Python 0.9.0.[36] Python 2.0 was released in 2000. Python 3.0,
released in 2008, was a major revision not completely backward-compatible with earlier versions.
Python 2.7.18, released in 2020, was the last release of Python 2.[37]
Python consistently ranks as one of the most popular programming languages, and has gained
widespread use in the machine learning community.[38][39][40][41]
History
Python was invented in the late 1980s[42] by Guido van Rossum at Centrum Wiskunde & Informatica
(CWI) in the Netherlands as a successor to the ABC programming language, which was inspired by SETL,
[43] capable of exception handling and interfacing with the Amoeba operating system.[12] Its
implementation began in December 1989.[44] Van Rossum shouldered sole responsibility for the project,
as the lead developer, until 12 July 2018, when he announced his "permanent vacation" from his
responsibilities as Python's "benevolent dictator for life" (BDFL), a title the Python community bestowed
upon him to reflect his long-term commitment as the project's chief decision-maker[45] (he's since come
out of retirement and is self-titled "BDFL-emeritus"). In January 2019, active Python core developers
elected a five-member Steering Council to lead the project.[46][47]
Python 2.0 was released on 16 October 2000, with many major new features such as list
comprehensions, cycle-detecting garbage collection, reference counting, and Unicode support.[48]
Python 3.0, released on 3 December 2008, with many of its major features backported to Python
2.6.x[49] and 2.7.x. Releases of Python 3 include the 2to3 utility, which automates the translation of
Python 2 code to Python 3.[50]
Python 2.7's end-of-life was initially set for 2015, then postponed to 2020 out of concern that a large
body of existing code could not easily be forward-ported to Python 3.[51][52] No further security
patches or other improvements will be released for it.[53][54] Currently only 3.8 and later are supported
(2023 security issues were fixed in e.g. 3.7.17, the final 3.7.x release[55]). While Python 2.7 and older is
officially unsupported, a different unofficial Python implementation, PyPy, continues to support Python
2, i.e. "2.7.18+" (plus 3.9 and 3.10), with the plus meaning (at least some) "backported security
updates".[56]
In 2021 (and again twice in 2022), security updates were expedited, since all Python versions were
insecure (including 2.7[57]) because of security issues leading to possible remote code execution[58] and
web-cache poisoning.[59] In 2022, Python 3.10.4 and 3.9.12 were expedited[60] and 3.8.13, because of
many security issues.[61] When Python 3.9.13 was released in May 2022, it was announced that the 3.9
series (joining the older series 3.8 and 3.7) would only receive security fixes in the future.[62] On 7
September 2022, four new releases were made due to a potential denial-of-service attack: 3.10.7,
3.9.14, 3.8.14, and 3.7.14.[63][64]
As of October 2023, Python 3.12 is the stable release, and 3.12 and 3.11 are the only versions with active
(as opposed to just security) support. Notable changes in 3.11 from 3.10 include increased program
execution speed and improved error reporting.[65]
Every Python release since 3.5 has added some syntax to the language. 3.10 added the | union type
operator [66] and the match and case keywords (for structural pattern matching statements). 3.11
expanded exception handling functionality. Python 3.12 added the new keyword type.
Python 3.11 claims to be between 10 and 60% faster than Python 3.10, and Python 3.12 adds another
5% on top of that. It also has improved error messages, and many other changes.
Since 27 June 2023, Python 3.8 is the oldest supported version of Python (albeit in the 'security support'
phase), due to Python 3.7 reaching end-of-life.[67]
Python 3.13 introduced an incremental garbage collector (producing shorter pauses for collection in
programs with a lot of objects); an experimental JIT compiler;[68] and removals from the C API. Some
standard library modules and many deprecated classes, functions and methods, will be removed in
Python 3.15 and or 3.16.[69][70] Starting with 3.13, it and later versions have 2 years of full support (up
from one and a half); followed by 3 years of security support (for same total support as before).
Python uses dynamic typing and a combination of reference counting and a cycle-detecting garbage
collector for memory management.[76] It uses dynamic name resolution (late binding), which binds
method and variable names during program execution.
Its design offers some support for functional programming in the Lisp tradition. It has
filter,mapandreduce functions; list comprehensions, dictionaries, sets, and generator expressions.[77]
The standard library has two modules (itertools and functools) that implement functional tools
borrowed from Haskell and Standard ML.[78]
Its core philosophy is summarized in the Zen of Python (PEP 20), which includes aphorisms such as:[79]