HOME

TheInfoList



OR:

The
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (prog ...
was conceived in the late 1980s, and its implementation was started in December 1989 by
Guido van Rossum Guido van Rossum (; born 31 January 1956) is a Dutch programmer. He is the creator of the Python programming language, for which he was the " benevolent dictator for life" (BDFL) until he stepped down from the position on 12 July 2018. He ...
at CWI in
the Netherlands , Terminology of the Low Countries, informally Holland, is a country in Northwestern Europe, with Caribbean Netherlands, overseas territories in the Caribbean. It is the largest of the four constituent countries of the Kingdom of the Nether ...
as a successor to
ABC ABC are the first three letters of the Latin script. ABC or abc may also refer to: Arts, entertainment and media Broadcasting * Aliw Broadcasting Corporation, Philippine broadcast company * American Broadcasting Company, a commercial American ...
capable of
exception handling In computing and computer programming, exception handling is the process of responding to the occurrence of ''exceptions'' – anomalous or exceptional conditions requiring special processing – during the execution of a program. In general, an ...
and interfacing with the Amoeba operating system. Van Rossum was Python's principal author and had a central role in deciding the direction of Python (as reflected in the title given to him by the Python community, ''Benevolent Dictator for Life'' (BDFL)) until stepping down as leader on July 12, 2018. Python was named after the
BBC TV BBC Television is a service of the BBC. The corporation has operated a public broadcast television service in the United Kingdom, under the terms of a royal charter, since 1 January 1927. It produced television programmes from its own studios ...
show ''
Monty Python's Flying Circus ''Monty Python's Flying Circus'' (also known as simply ''Monty Python'') is a British surreal humour, surreal sketch comedy series created by and starring Graham Chapman, John Cleese, Eric Idle, Terry Jones, Michael Palin, and Terry Gilliam, w ...
''. Python 2.0 was released on October 16, 2000, with many major new features, such as
list comprehension A list comprehension is a syntactic construct available in some programming languages for creating a list based on existing lists. It follows the form of the mathematical '' set-builder notation'' (''set comprehension'') as distinct from the use o ...
s, cycle-detecting
garbage collector A waste collector, also known as a garbage man, garbage collector, trashman (in the U.S), binman or dustman (in the UK), is a person employed by a public or private enterprise to collect and dispose of municipal solid waste (refuse) and recycla ...
,
reference counting In computer science, reference counting is a programming technique of storing the number of references, pointers, or handles to a resource, such as an object, a block of memory, disk space, and others. In garbage collection algorithms, refere ...
,
memory management Memory management (also dynamic memory management, dynamic storage allocation, or dynamic memory allocation) is a form of Resource management (computing), resource management applied to computer memory. The essential requirement of memory manag ...
and support for
Unicode Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
, along with a change to the development process itself, with a shift to a more transparent and community-backed process. Python 3.0, a major, backwards-incompatible release, was released on December 3, 2008 after a long period of testing. Many of its major features were also
backport Backporting is the action of taking parts from a newer version of a software system or software component and porting them to an older version of the same software. It forms part of the maintenance step in a software development process, and it i ...
ed to the backwards-compatible Python versions 2.6 and 2.7 until support for Python 2 finally ceased at the beginning of
2020 The year 2020 was heavily defined by the COVID-19 pandemic, which led to global Social impact of the COVID-19 pandemic, social and Economic impact of the COVID-19 pandemic, economic disruption, mass cancellations and postponements of even ...
. Releases of Python 3 include the 2to3 utility, which automates the translation of Python 2 code to Python 3.


Early history

Van Rossum first published the code (for Python version 0.9.1) to alt.sources in February 1991. Several features of the language were already present at this stage, among them classes with inheritance, exception handling, functions, and various core
datatypes In computer science and computer programming, a data type (or simply type) is a collection or grouping of data values, usually specified by a set of possible values, a set of allowed operations on these values, and/or a representation of these ...
such as , , and . The initial release also contained a
module system Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect or "concern" of the de ...
borrowed from
Modula-3 Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. It has been influential in research circles (influencing the designs of languages such as Java, C#, Python and Nim), but it ha ...
; Van Rossum describes the module as "one of Python's major programming units". Python's exception model also resembled Modula-3's, with the addition of an clause. In 1994 ews://comp.lang.python comp.lang.python the primary discussion forum for Python, was formed.


Version 1

Python reached version 1.0 in January 1994. The major new features included in this release were the functional programming tools
lambda Lambda (; uppercase , lowercase ; , ''lám(b)da'') is the eleventh letter of the Greek alphabet, representing the voiced alveolar lateral approximant . In the system of Greek numerals, lambda has a value of 30. Lambda is derived from the Phoen ...
,
map A map is a symbolic depiction of interrelationships, commonly spatial, between things within a space. A map may be annotated with text and graphics. Like any graphic, a map may be fixed to paper or other durable media, or may be displayed on ...
,
filter Filtration is a physical process that separates solid matter and fluid from a mixture. Filter, filtering, filters or filtration may also refer to: Science and technology Computing * Filter (higher-order function), in functional programming * Fil ...
and
reduce Reduction, reduced, or reduce may refer to: Science and technology Chemistry * Reduction (chemistry), part of a reduction-oxidation (redox) reaction in which atoms have their oxidation state changed. ** Organic redox reaction, a redox reacti ...
. Van Rossum stated that "Python acquired lambda, reduce(), filter() and map(), courtesy of a
Lisp Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation. Originally specified in the late 1950s, ...
hacker who missed them and submitted working patches". 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 The Corporation for National Research Initiatives (CNRI), based in Reston, Virginia, is a non-profit organization founded in 1986 by Bob Kahn, Robert E. Kahn as an "activities center around strategic development of network-based information technol ...
(CNRI) in Reston,
Virginia Virginia, officially the Commonwealth of Virginia, is a U.S. state, state in the Southeastern United States, Southeastern and Mid-Atlantic (United States), Mid-Atlantic regions of the United States between the East Coast of the United States ...
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 argument Keyword may refer to: Computing * Index term, a term used as a keyword to documents in an information system such as a catalog or a search engine * Keyword (Internet search), a word or phrase typically used by bloggers or online content creator to ...
s (which are also similar to
Common Lisp Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
's keyword arguments) and built-in support for
complex number In mathematics, a complex number is an element of a number system that extends the real numbers with a specific element denoted , called the imaginary unit and satisfying the equation i^= -1; every complex number can be expressed in the for ...
s. Also included is a basic form of
data hiding In computer science, information hiding is the principle of segregation of the ''design decisions'' in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decisio ...
by
name mangling In compiler construction, name mangling (also called name decoration) is a technique used to solve various problems caused by the need to resolve unique names for programming entities in many modern programming languages. It provides means to e ...
, though this is easily bypassed. 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 The Defense Advanced Research Projects Agency (DARPA) is a research and development agency of the United States Department of Defense responsible for the development of emerging technologies for use by the military. Originally known as the Adva ...
. , 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.


BeOpen

In 2000, the Python core development team moved to BeOpen.com to form the BeOpen PythonLabs team. 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. 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
law Law is a set of rules that are created and are enforceable by social or governmental institutions to regulate behavior, with its precise definition a matter of longstanding debate. It has been variously described as a science and as the ar ...
s of the
State of Virginia Virginia, officially the Commonwealth of Virginia, is a state in the Southeastern and Mid-Atlantic regions of the United States between the Atlantic Coast and the Appalachian Mountains. The state's capital is Richmond and its most populou ...
. The
Free Software Foundation The Free Software Foundation (FSF) is a 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985. The organisation supports the free software movement, with the organization's preference for software being distributed ...
argued that the choice-of-law clause was incompatible with the
GNU General Public License The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
. BeOpen, CNRI and the FSF negotiated a change to Python's
free-software license A free-software license is a notice that grants the recipient of a piece of software extensive rights to modify and software distribution, redistribute that software. These actions are usually prohibited by copyright law, but the rights-holde ...
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.


Version 2

Python 2.0, released October 2000, introduced
list comprehension A list comprehension is a syntactic construct available in some programming languages for creating a list based on existing lists. It follows the form of the mathematical '' set-builder notation'' (''set comprehension'') as distinct from the use o ...
s, a feature borrowed from the
functional programming In computer science, functional programming is a programming paradigm where programs are constructed by Function application, applying and Function composition (computer science), composing Function (computer science), functions. It is a declarat ...
languages
SETL SETL (SET Language) is a very high-level programming language based on the mathematical theory of sets. It was originally developed at the New York University (NYU) Courant Institute of Mathematical Sciences in the late 1960s, by a group cont ...
and
Haskell Haskell () is a general-purpose, statically typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell pioneered several programming language ...
. Python's syntax for this construct is very similar to Haskell's, apart from Haskell's preference for
punctuation Punctuation marks are marks indicating how a piece of writing, written text should be read (silently or aloud) and, consequently, understood. The oldest known examples of punctuation marks were found in the Mesha Stele from the 9th century BC, c ...
characters and Python's preference for alphabetic keywords. Python 2.0 also introduced a garbage collector able to collect reference cycles. Python 2.1 was close to Python 1.6.1, as well as Python 2.0. Its license was renamed
Python Software Foundation License The Python Software Foundation License (PSFL) is a BSD-style, permissive software license which is compatible with the GNU General Public License (GPL). Its primary use is for distribution of the Python project software and its documentatio ...
. All code, documentation and specifications added, from the time of Python 2.1's alpha release on, is owned by the
Python Software Foundation The Python Software Foundation (PSF) is an American nonprofit organization devoted to the Python programming language, launched on March 6, 2001. The mission of the foundation is to foster development of the Python community and is responsible fo ...
(PSF), a
nonprofit organization A nonprofit organization (NPO), also known as a nonbusiness entity, nonprofit institution, not-for-profit organization, or simply a nonprofit, is a non-governmental (private) legal entity organized and operated for a collective, public, or so ...
formed in 2001, modeled after the
Apache Software Foundation The Apache Software Foundation ( ; ASF) is an American nonprofit corporation (classified as a 501(c)(3) organization in the United States) to support a number of open-source software projects. The ASF was formed from a group of developers of the ...
. The release included a change to the language specification to support nested scopes, like other statically scoped languages. (The feature was turned off by default, and not required, until Python 2.2.) Python 2.2 was released in December 2001; 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. Also added were generators which were inspired by
Icon An icon () is a religious work of art, most commonly a painting, in the cultures of the Eastern Orthodox, Oriental Orthodox, Catholic Church, Catholic, and Lutheranism, Lutheran churches. The most common subjects include Jesus, Mary, mother of ...
. Python 2.5 was released in September 2006 and introduced the statement, which encloses a code block within a context manager (for example, acquiring a
lock Lock(s) or Locked may refer to: Common meanings *Lock and key, a mechanical device used to secure items of importance *Lock (water navigation), a device for boats to transit between different levels of water, as in a canal Arts and entertainme ...
before the block of code is run and releasing the lock afterwards, or opening a
file File or filing may refer to: Mechanical tools and processes * File (tool), a tool used to remove fine amounts of material from a workpiece. ** Filing (metalworking), a material removal process in manufacturing ** Nail file, a tool used to gen ...
and then closing it), allowing
resource acquisition is initialization Resource acquisition is initialization (RAII) is a programming idiom used in several object-oriented, statically typed programming languages to describe a particular language behavior. In RAII, holding a resource is a class invariant, and is tie ...
(RAII)-like behavior and replacing a common try/finally idiom. 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. Similarly, Python 2.7 coincided with and included features from Python 3.1, 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. 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. Python 2.7 support ended on January 1, 2020, along with
code freeze In software engineering, a freeze is a point in time in the development process after which the rules for making changes to the source code or related resources become more strict, or the period during which those rules are applied. A freeze hel ...
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. This marked the end-of-life of Python 2.


Version 3

Python 3.0 (also called "Python 3000" or "Py3K") was released on December 3, 2008. It was designed to rectify fundamental design flaws in the languagethe 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". 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 The Zen of Python is a collection of 19 Coding conventions, "guiding principles" for writing computer programs that influence the design of the Python (programming language), Python programming language. Python code that aligns with these principl ...
: "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 Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
,
structured Structuring, also known as smurfing in banking jargon, is the practice of executing financial transactions such as making bank deposits in a specific pattern, calculated to avoid triggering financial institutions to file reports required by law ...
, and
functional Functional may refer to: * Movements in architecture: ** Functionalism (architecture) ** Form follows function * Functional group, combination of atoms within molecules * Medical conditions without currently visible organic basis: ** Functional s ...
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. Python's
dynamic typing In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a ''type'' (for example, integer, floating point, string) to every '' term'' (a word, phrase, or other set of symbols). Usu ...
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. 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. 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.


Features

Some of the major changes included for Python 3.0 were: * Changing so that it is a
built-in function In computer programming, a function (also procedure, method, subroutine, routine, or subprogram) is a callable unit of software logic that has a well-defined interface and behavior and can be invoked multiple times. Callable units provide a po ...
, 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 is available as a built-in but is masked by the print statement syntax, which can be disabled by entering at the top of the file * Removal of the Python 2 function, and the renaming of the function to . Python 3's function behaves like Python 2's function, in that the input is always returned as a string rather than being evaluated as an expression * Moving (but not or ) out of the built-in namespace and into (the rationale being code that uses is less readable than code that uses a for loop and accumulator variable) * Adding support for optional function annotations that can be used for informal type declarations or other purposes * Unifying the / types, representing text, and introducing a separate immutable type; and a mostly corresponding mutable type, both of which represent arrays of
byte The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable un ...
s * Removing backward-compatibility features, including old-style classes, string exceptions, and implicit relative imports * A change in
integer division Division is one of the four basic operations of arithmetic. The other operations are addition, subtraction, and multiplication. What is being divided is called the ''dividend'', which is divided by the ''divisor'', and the result is called the ...
functionality: in Python 2, integer division always returns an integer. For example is ; whereas in Python 3, is . (In both Python 22.2 onwardsand Python 3, a separate operator exists to provide the old behavior: is ) *Allowing non-ASCII letters to be used in identifiers, such as in smörgåsbord


Subsequent releases

Python 3.2 defined a stable ABI, allowing extension modules to rely on functions across different python versions. Python 3.5 added the typing module, which allows for type hints and function signature annotation. It additionally added the async/await syntax. Furthermore, .pyo files were removed, with .pyc files representing both unoptimized and optimized bytecode. Python 3.6 followed with async generators and async comprehension, as well as formatted string literals. Python 3.10 introduced pattern matching via match/case statements. Additionally it provided improved error messages which "were inspired by previous work in the PyPy interpreter." Python 3.13 added an experimental JIT compiler. Additionally it added the ability to disable the global interpreter lock.


Table of versions

Releases before numbered versions: * Implementation startedDecember, 1989 * Internal releases at
Centrum Wiskunde & Informatica The (abbr. CWI; English: "National Research Institute for Mathematics and Computer Science") is a research centre in the field of mathematics and theoretical computer science. It is part of the institutes organization of the Dutch Research Cou ...
1990 Table notes:


Support


See also

*
History of software engineering The history of software engineering begins around the 1960s. Writing software has evolved into a profession concerned with how best to maximize the quality of software and of how to create it. Quality can refer to how maintainable software is, t ...


References


External links


Guido Van Rossum blog on Python's History
{{DEFAULTSORT:History Of Python
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (prog ...
Python (programming language)
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (prog ...