History of Python - Wikipedia
History of Python - Wikipedia
Le langage de programmation Python a été conçu à la fin des années 1980 [ 1 ] et son
implémentation a débuté en décembre 1989 [ 2 ] par Guido van Rossum au CWI aux Pays-Bas, en
tant que successeur d' ABC , capable de gérer les exceptions et de s'interfacer avec le système
d'exploitation Amoeba [ 3 ] . Van Rossum est l'auteur principal de Python, et son rôle central
continu dans la décision de l'orientation de Python se reflète dans le titre que lui a donné la
communauté Python, Dictateur bienveillant à vie (BDFL) [ 4 ] [ 5 ] ( Cependant, Van Rossum a
démissionné de son poste de leader le 12 juillet 2018 [ 6 ] ). Python doit son nom à l' émission
télévisée de la BBC Monty Python's Flying Circus [ 7 ] .
Python 2.0 est sorti le 16 octobre 2000, avec de nombreuses nouvelles fonctionnalités majeures,
telles que les compréhensions de liste , le garbage collector à détection de cycle (en plus du
comptage de références ) et le comptage de références , pour la gestion de la mémoire et la
prise en charge d' Unicode , ainsi qu'un changement dans le processus de développement lui-
même, avec un passage à un processus plus transparent et soutenu par la communauté. [ 8 ]
Python 3.0, une version majeure et non rétrocompatible, est sortie le 3 décembre 2008 [ 9 ] après
une longue période de tests. Nombre de ses fonctionnalités majeures ont également été
rétroportées vers Python 2.6 et 2.7, rétrocompatibles mais désormais non pris en charge. [ 10 ]
Les versions de Python 3 incluent l' 2to3 utilitaire, qui automatise la traduction du code Python
2 vers Python 3. [ 11 ]
Histoire ancienne
In February 1991, Van Rossum published the code (labeled version 0.9.0) to alt.sources.[12][13]
Already present at this stage in development were classes with inheritance, exception handling,
functions, and the core datatypes of list , dict , str and so on. Also in this initial release
was a module system borrowed from Modula-3; Van Rossum describes the module as "one of
Python's major programming units".[1] Python's exception model also resembles Modula-3's, with
the addition of an else clause.[3] In 1994 comp.lang.python (news://comp.lang.python) , the
primary discussion forum for Python, was formed, marking a milestone in the growth of Python's
userbase and popularity.[1]
Version 1
Python reached version 1.0 in January 1994. The major new features included in this release
were the functional programming tools lambda , map , filter and reduce . Van Rossum
stated that "Python acquired lambda, reduce(), filter() and map(), courtesy of a Lisp hacker who
missed them and submitted working patches".[14]
The last version released while Van Rossum was at CWI was Python 1.2. In 1995, Van Rossum
continued his work on Python at the Corporation for National Research Initiatives (CNRI) in
Reston, Virginia from where he released several versions.
By version 1.4, Python had acquired several new features. Notable among these are the Modula-
3 inspired keyword arguments (which are also similar to Common Lisp's keyword arguments)
and built-in support for complex numbers. Also included is a basic form of data hiding by name
mangling, though this is easily bypassed.[15]
During Van Rossum's stay at CNRI, he launched the Computer Programming for Everybody
(CP4E) initiative, intending to make programming more accessible to more people, with a basic
"literacy" in programming languages, similar to the basic English literacy and mathematics skills
required by most employers. Python served a central role in this: because of its focus on clean
syntax, it was already suitable, and CP4E's goals bore similarities to its predecessor, ABC. The
project was funded by DARPA.[16] As of 2007, the CP4E project is inactive, and while Python
attempts to be easily learnable and not too arcane in its syntax and semantics, outreach to non-
programmers is not an active concern.[17]
BeOpen
In 2000, the Python core development team moved to BeOpen.com[18] to form the BeOpen
PythonLabs team.[19][20] CNRI requested that a version 1.6 be released, summarizing Python's
development up to the point at which the development team left CNRI. Consequently, the release
schedules for 1.6 and 2.0 had a significant amount of overlap.[8] Python 2.0 was the only release
from BeOpen.com. After Python 2.0 was released by BeOpen.com, Guido van Rossum and the
other PythonLabs developers joined Digital Creations.
The Python 1.6 release included a new CNRI license that was substantially longer than the CWI
license that had been used for earlier releases. The new license included a clause stating that
the license was governed by the laws of the State of Virginia. The Free Software Foundation
argued that the choice-of-law clause was incompatible with the GNU General Public License.
BeOpen, CNRI and the FSF negotiated a change to Python's free-software license that would
make it GPL-compatible. Python 1.6.1 is essentially the same as Python 1.6, with a few minor
bug fixes, and with the new GPL-compatible license.[21]
Version 2
Python 2.0, released October 2000,[8] introduced list comprehensions, a feature borrowed from
the functional programming languages SETL and Haskell. Python's syntax for this construct is
very similar to Haskell's, apart from Haskell's preference for punctuation characters and Python's
preference for alphabetic keywords. Python 2.0 also introduced a garbage collector able to
collect reference cycles.[8]
Python 2.1 was close to Python 1.6.1, as well as Python 2.0. Its license was renamed Python
Software Foundation License. All code, documentation and specifications added, from the time
of Python 2.1's alpha release on, is owned by the Python Software Foundation (PSF), a nonprofit
organization formed in 2001, modeled after the Apache Software Foundation.[21] The release
included a change to the language specification to support nested scopes, like other statically
scoped languages.[22] (The feature was turned off by default, and not required, until Python 2.2.)
Python 2.2 was released in December 2001;[23] a major innovation was the unification of Python's
types (types written in C) and classes (types written in Python) into one hierarchy. This single
unification made Python's object model purely and consistently object oriented.[24] Also added
were generators which were inspired by Icon.[25]
Historic Python logos used on Windows (left) and the Macintosh (center), and the logo used since version 2.5 (right).
Python 2.5 was released in September 2006[26] and introduced the with statement, which
encloses a code block within a context manager (for example, acquiring a lock before the block
of code is run and releasing the lock afterwards, or opening a file and then closing it), allowing
resource acquisition is initialization (RAII)-like behavior and replacing a common try/finally
idiom.[27]
Python 2.6 was released to coincide with Python 3.0, and included some features from that
release, as well as a "warnings" mode that highlighted the use of features that were removed in
Python 3.0.[28][10] Similarly, Python 2.7 coincided with and included features from Python 3.1,[29]
which was released on June 26, 2009. Parallel 2.x and 3.x releases then ceased, and Python 2.7
was the last release in the 2.x series.[30] In November 2014, it was announced that Python 2.7
would be supported until 2020, but users were encouraged to move to Python 3 as soon as
possible.[31] Python 2.7 support ended on January 1, 2020, along with code freeze of 2.7
development branch. A final release, 2.7.18, occurred on April 20, 2020, and included fixes for
critical bugs and release blockers.[32] This marked the end-of-life of Python 2.[33]
Version 3
Python 3.0 (also called "Python 3000" or "Py3K") was released on December 3, 2008.[9] It was
designed to rectify fundamental design flaws in the language – the changes required could not
be implemented while retaining full backwards compatibility with the 2.x series, which
necessitated a new major version number. The guiding principle of Python 3 was: "reduce feature
duplication by removing old ways of doing things".[34]
Python 3.0 was developed with the same philosophy as in prior versions. However, as Python
had accumulated new and redundant ways to program the same task, Python 3.0 had an
emphasis on removing duplicative constructs and modules, in keeping with the Zen of Python:
"There should be one— and preferably only one —obvious way to do it".
Nonetheless, Python 3.0 remained a multi-paradigm language. Coders could still follow object-
oriented, structured, and functional programming paradigms, among others, but within such
broad choices, the details were intended to be more obvious in Python 3.0 than they were in
Python 2.x.
Compatibility
Python 3.0 broke backward compatibility, and much Python 2 code does not run unmodified on
Python 3.[35] Python's dynamic typing combined with the plans to change the semantics of
certain methods of dictionaries, for example, made perfect mechanical translation from Python
2.x to Python 3.0 very difficult. A tool called " 2to3 " does the parts of translation that can be
done automatically. At this, 2to3 appeared to be fairly successful, though an early review noted
that there were aspects of translation that such a tool would never be able to handle.[36] Prior to
the roll-out of Python 3, projects requiring compatibility with both the 2.x and 3.x series were
recommended to have one source (for the 2.x series), and produce releases for the Python 3.x
platform using 2to3 . Edits to the Python 3.x code were discouraged for so long as the code
needed to run on Python 2.x.[10] This is no longer recommended; as of 2012 the preferred
approach was to create a single code base that can run under both Python 2 and 3 using
compatibility modules.[37]
Features
Changing print so that it is a built-in function, not a statement. This made it easier to
change a module to use a different print function, as well as making the syntax more regular.
In Python 2.6 and 2.7 print() is available as a built-in but is masked by the print statement
syntax, which can be disabled by entering from __future__ import print_function
at the top of the file[38]
Removal of the Python 2 input function, and the renaming of the raw_input function to
input . Python 3's input function behaves like Python 2's raw_input function, in that
the input is always returned as a string rather than being evaluated as an expression
Moving reduce (but not map or filter ) out of the built-in namespace and into
functools (the rationale being code that uses reduce is less readable than code that
uses a for loop and accumulator variable)[39][40]
Adding support for optional function annotations that can be used for informal type
declarations or other purposes[41]
Unifying the str / unicode types, representing text, and introducing a separate immutable
bytes type; and a mostly corresponding mutable bytearray type, both of which represent
arrays of bytes[42]
Table of versions
Legend: Old version, not maintained Old version, still maintained Latest version
Latest preview version Future version
Italics indicates the latest micro version of currently supported versions as of 2025-02-20.
Table notes:
c. Official support ended on 2020-01-01, but a final release of the code as it appeared on 2020-
01-01 was released on 2020-04-20 as version 2.7.18.[33]
Support
See also
References
6. Fairchild, Carlie (July 12, 2018). "Guido van Rossum Stepping Down from Role as Python's
Benevolent Dictator For Life" (https://www.linuxjournal.com/content/guido-van-rossum-step
ping-down-role-pythons-benevolent-dictator-life) . Linux Journal. Archived (https://web.arch
ive.org/web/20180713192427/https://www.linuxjournal.com/content/guido-van-rossum-st
epping-down-role-pythons-benevolent-dictator-life) from the original on July 13, 2018.
Retrieved July 12, 2018.
8. Kuchling, Andrew M.; Zadka, Moshe. "What's New in Python 2.0" (https://web.archive.org/w
eb/20091214142515/http://www.amk.ca/python/2.0) . Archived from the original (http://w
ww.amk.ca/python/2.0/) on December 14, 2009. Retrieved March 22, 2007.
10. van Rossum, Guido (April 5, 2006). "PEP 3000 – Python 3000" (https://peps.python.org/pep-
3000/) . Archived (https://web.archive.org/web/20220402165138/https://peps.python.or
g/pep-3000/) from the original on April 2, 2022. Retrieved December 27, 2016.
11. "2to3 – Automated Python 2 to 3 code translation" (https://docs.python.org/3/library/2to3.h
tml) . docs.python.org. Archived (https://web.archive.org/web/20200604232823/https://do
cs.python.org/3/library/2to3.html) from the original on June 4, 2020. Retrieved
February 2, 2021.
14. van Rossum, Guido. "The fate of reduce() in Python 3000" (http://www.artima.com/weblog
s/viewpost.jsp?thread=98196) . Artima Developer. Archived (https://web.archive.org/web/
20070407034617/http://www.artima.com/weblogs/viewpost.jsp?thread=98196) from the
original on April 7, 2007. Retrieved March 22, 2007.
22. Hylton, Jeremy (November 1, 2000). "PEP 227 – Statically Nested Scopes" (https://peps.pyt
hon.org/pep-0227/) . Archived (https://web.archive.org/web/20220523193448/https://pep
s.python.org/pep-0227/) from the original on May 23, 2022. Retrieved March 22, 2007.
24. Kuchling, Andrew M. (December 21, 2001). "PEPs 252 and 253: Type and Class Changes" (h
ttps://web.archive.org/web/20080917162106/http://python.org/doc/2.2.3/whatsnew/sect-
rellinks.html) . What's New in Python 2.2. Python Foundation. Archived from the original (htt
ps://www.python.org/doc/2.2.3/whatsnew/sect-rellinks.html) on September 17, 2008.
Retrieved September 5, 2008.
25. Schemenauer, Neil; Peters, Tim; Hetland, Magnus (December 21, 2001). "PEP 255 – Simple
Generators" (https://peps.python.org/pep-0255/) . Archived (https://web.archive.org/web/
20230131031212/https://peps.python.org/pep-0255/) from the original on January 31,
2023. Retrieved September 5, 2008.
28. Norwitz, Neal; Warsaw, Barry (June 29, 2006). "PEP 361 – Python 2.6 and 3.0 Release
Schedule" (https://peps.python.org/pep-0361/) . Archived (https://web.archive.org/web/20
220412092231/https://peps.python.org/pep-0361/) from the original on April 12, 2022.
Retrieved November 29, 2019.
29. Kuchling, Andrew M. (July 3, 2010). "What's New in Python 2.7" (https://docs.python.org/rel
ease/2.7/whatsnew/2.7.html) . Archived (https://web.archive.org/web/20120607093732/
http://docs.python.org/release/2.7/whatsnew/2.7.html) from the original on June 7, 2012.
Retrieved October 7, 2012. "Much as Python 2.6 incorporated features from Python 3.0,
version 2.7 incorporates some of the new features in Python 3.1. The 2.x series continues
to provide tools for migrating to the 3.x series."
30. Warsaw, Barry (November 9, 2011). "PEP 404 – Python 2.8 Un-release Schedule" (https://pe
ps.python.org/pep-0404/) . Archived (https://web.archive.org/web/20220523193051/http
s://peps.python.org/pep-0404/) from the original on May 23, 2022. Retrieved October 7,
2012.
31. Gee, Sue (April 14, 2014). "Python 2.7 To Be Maintained Until 2020" (http://www.i-programm
er.info/news/216-python/7179-python-27-to-be-maintained-until-2020.html) . i-
programmer.info. Archived (https://web.archive.org/web/20160510071844/http://www.i-pro
grammer.info/news/216-python/7179-python-27-to-be-maintained-until-2020.html) from
the original on May 10, 2016. Retrieved December 27, 2016.
33. Peterson, Benjamin (November 3, 2008). "PEP 373 – Python 2.7 Release Schedule" (https://
peps.python.org/pep-0373/) . Archived (https://web.archive.org/web/20220313175528/ht
tps://peps.python.org/pep-0373/) from the original on March 13, 2022. Retrieved April 20,
2020.
38. Brandl, Georg (November 19, 2007). "PEP 3105 – Make print a function" (https://peps.pytho
n.org/pep-3105/) . Archived (https://web.archive.org/web/20220402184902/https://peps.
python.org/pep-3105/) from the original on April 2, 2022. Retrieved December 27, 2016.
41. Winter, Collin; Lownds, Tony (December 2, 2006). "PEP 3107 – Function Annotations" (http
s://peps.python.org/pep-3107/) . Archived (https://web.archive.org/web/2022031306125
2/https://peps.python.org/pep-3107/) from the original on March 13, 2022. Retrieved
December 27, 2016.
42. van Rossum, Guido (September 26, 2007). "PEP 3137 – Immutable Bytes and Mutable
Buffer" (https://peps.python.org/pep-3137/) . Archived (https://web.archive.org/web/2022
0523193053/https://peps.python.org/pep-3137/) from the original on May 23, 2022.
Retrieved May 23, 2022.
45. Drake, Fred L. Jr. (July 25, 2000). "PEP 160 – Python 1.6 Release Schedule" (https://peps.py
thon.org/pep-0160/) . Archived (https://web.archive.org/web/20220513092109/https://pe
ps.python.org/pep-0160/) from the original on May 13, 2022. Retrieved November 29,
2019.
48. Hylton, Jeremy (October 16, 2000). "PEP 226 – Python 2.1 Release Schedule" (https://peps.
python.org/pep-0226/) . Archived (https://web.archive.org/web/20220523193056/https://
peps.python.org/pep-0226/) from the original on May 23, 2022. Retrieved November 29,
2019.
49. Warsaw, Barry; van Rossum, Guido (April 17, 2001). "PEP 251 – Python 2.2 Release
Schedule" (https://peps.python.org/pep-0251/) . Archived (https://web.archive.org/web/20
220504110143/https://peps.python.org/pep-0251/) from the original on May 4, 2022.
Retrieved November 29, 2019.
50. van Rossum, Guido (February 27, 2002). "PEP 283 – Python 2.3 Release Schedule" (https://
peps.python.org/pep-0283/) . Archived (https://web.archive.org/web/20220412092156/ht
tps://peps.python.org/pep-0283/) from the original on April 12, 2022. Retrieved
November 29, 2019.
51. Warsaw, Barry; Hettinger, Raymond; Baxter, Anthony (July 29, 2003). "PEP 320 – Python 2.4
Release Schedule" (https://peps.python.org/pep-0320/) . Archived (https://web.archive.or
g/web/20220517213754/https://peps.python.org/pep-0320/) from the original on May
17, 2022. Retrieved November 29, 2019.
52. Norwitz, Neal; van Rossum, Guido; Baxter, Anthony (February 7, 2006). "PEP 356 – Python
2.5 Release Schedule" (https://peps.python.org/pep-0356/) . Archived (https://web.archiv
e.org/web/20220408143508/https://peps.python.org/pep-0356/) from the original on
April 8, 2022. Retrieved November 29, 2019.
54. Peterson, Benjamin (February 8, 2009). "PEP 375 – Python 3.1 Release Schedule" (https://p
eps.python.org/pep-0375/) . Archived (https://web.archive.org/web/20220419175721/htt
ps://peps.python.org/pep-0375/) from the original on April 19, 2022. Retrieved
November 29, 2019.
55. Peterson, Benjamin (June 12, 2011). "[RELEASED] Python 3.1.4" (https://mail.python.org/arc
hives/list/python-announce-list@python.org/message/6HBADVUPFMK3TUJVZWAMYIO2J
P4WZ7UT/) . python-announce (Mailing list). Archived (https://web.archive.org/web/20211
206114447/https://mail.python.org/archives/list/python-announce-list@python.org/messa
ge/6HBADVUPFMK3TUJVZWAMYIO2JP4WZ7UT/) from the original on December 6,
2021. Retrieved November 29, 2019.
56. Brandl, Georg (December 30, 2009). "PEP 392 – Python 3.2 Release Schedule" (https://peps.
python.org/pep-0392/) . Archived (https://web.archive.org/web/20220419175659/https://
peps.python.org/pep-0392/) from the original on April 19, 2022. Retrieved November 29,
2019.
57. Brandl, Georg (March 23, 2011). "PEP 398 – Python 3.3 Release Schedule" (https://peps.pyt
hon.org/pep-0398/) . Archived (https://web.archive.org/web/20220412092219/https://pep
s.python.org/pep-0398/) from the original on April 12, 2022. Retrieved November 29,
2019.
58. Hastings, Larry (October 17, 2012). "PEP 429 – Python 3.4 Release Schedule" (https://peps.
python.org/pep-0429/) . Archived (https://web.archive.org/web/20220412092244/https://
peps.python.org/pep-0429/) from the original on April 12, 2022. Retrieved November 29,
2019.
59. Hastings, Larry (August 9, 2017). "[RELEASED] Python 3.4.7 is now available" (https://mail.p
ython.org/archives/list/python-announce-list@python.org/message/S6OZYIRIRG7ZLSTFLX
A36KUQ56LV2DH6/) . python-announce (Mailing list). Archived (https://web.archive.org/w
eb/20211206114413/https://mail.python.org/archives/list/python-announce-list@python.or
g/message/S6OZYIRIRG7ZLSTFLXA36KUQ56LV2DH6/) from the original on December 6,
2021. Retrieved November 29, 2019.
60. Hastings, Larry (September 22, 2014). "PEP 478 – Python 3.5 Release Schedule" (https://pe
ps.python.org/pep-0478/) . Archived (https://web.archive.org/web/20220412092240/http
s://peps.python.org/pep-0478/) from the original on April 12, 2022. Retrieved March 17,
2020.
61. Hastings, Larry (August 8, 2017). "[RELEASED] Python 3.5.4 is now available" (https://mail.p
ython.org/archives/list/python-announce-list@python.org/message/HOIDGMHH35YLRM72
UKOWI4CVXPXH3DJ2/) . python-announce (Mailing list). Archived (https://web.archive.or
g/web/20211206101037/https://mail.python.org/archives/list/python-announce-list@pytho
n.org/message/HOIDGMHH35YLRM72UKOWI4CVXPXH3DJ2/) from the original on
December 6, 2021. Retrieved November 29, 2019.
62. Deily, Ned (May 30, 2015). "PEP 494 – Python 3.6 Release Schedule" (https://peps.python.or
g/pep-0494/) . Archived (https://web.archive.org/web/20220523193057/https://peps.pyth
on.org/pep-0494/) from the original on May 23, 2022. Retrieved May 23, 2022.
63. Deily, Ned (December 23, 2016). "PEP 537 – Python 3.7 Release Schedule" (https://peps.pyt
hon.org/pep-0537/) . Archived (https://web.archive.org/web/20230716011743/https://pep
s.python.org/pep-0537/) from the original on July 16, 2023. Retrieved July 16, 2023.
64. Langa, Łukasz (January 27, 2018). "PEP 569 – Python 3.8 Release Schedule" (https://peps.p
ython.org/pep-0569/) . Archived (https://web.archive.org/web/20230716011524/https://p
eps.python.org/pep-0569/) from the original on July 16, 2023. Retrieved July 16, 2023.
65. Langa, Łukasz (October 13, 2020). "PEP 596 – Python 3.9 Release Schedule" (https://peps.p
ython.org/pep-0596/) . Archived (https://web.archive.org/web/20221112083255/https://p
eps.python.org/pep-0596/) from the original on November 12, 2022. Retrieved
December 7, 2022.
66. Langa, Łukasz (June 4, 2019). "PEP 602 – Annual Release Cycle for Python" (https://peps.py
thon.org/pep-0602/) . Archived (https://web.archive.org/web/20230716011411/https://pe
ps.python.org/pep-0602/) from the original on July 16, 2023. Retrieved July 16, 2023.
67. Salgado, Pablo (May 25, 2020). "PEP 619 – Python 3.10 Release Schedule" (https://peps.pyt
hon.org/pep-0619/) . Archived (https://web.archive.org/web/20230716012115/https://pep
s.python.org/pep-0619/) from the original on July 16, 2023. Retrieved July 16, 2023.
68. Salgado, Pablo (July 12, 2021). "PEP 664 – Python 3.11 Release Schedule" (https://peps.pyt
hon.org/pep-0664/) . Archived (https://web.archive.org/web/20230716011740/https://pep
s.python.org/pep-0664/) from the original on July 16, 2023. Retrieved July 16, 2023.
69. Wouters, Thomas (24 mai 2022).« PEP 693 – Calendrier de publication de Python 3.12 » (htt
ps://peps.python.org/pep-0693/) .Archivé (https://web.archive.org/web/2023071601135
6/https://peps.python.org/pep-0693/) de l'original le 16 juillet 2023.Consulté le 16 juillet
2023. (https://peps.python.org/pep-0693/) (https://web.archive.org/web/2023071601135
6/https://peps.python.org/pep-0693/)
70. Wouters, Thomas (26 mai 2023).« PEP 719 – Calendrier de publication de Python 3.13 » (htt
ps://peps.python.org/pep-0719/) .Archivé (https://web.archive.org/web/2023071601131
4/https://peps.python.org/pep-0719/) de l'original le 16 juillet 2023.Consulté le 16 juillet
2023. (https://peps.python.org/pep-0719/) (https://web.archive.org/web/2023071601131
4/https://peps.python.org/pep-0719/)
71. van Kemenade, Hugo (24 avril 2024).« PEP 745 – Calendrier de publication de Python 3.14 |
peps.python.org » (https://peps.python.org/pep-0745/) .Propositions d'amélioration de
Python (PEP).Archivé (https://web.archive.org/web/20240505153623/https://peps.python.o
rg/pep-0745/) de l'original le 5 mai 2024.Consulté le 15 mai 2024. (https://peps.python.or
g/pep-0745/) (https://web.archive.org/web/20240505153623/https://peps.python.org/pe
p-0745/)
Liens externes