Python (язык программирования)
Python — это высокого уровня язык программирования общего назначения . Его философия дизайна подчеркивает читаемость кода за счет использования значительных отступов . [33]
Python является динамически типизированным и собирает мусор . Он поддерживает несколько парадигм программирования , включая структурированное (особенно процедурное ), объектно-ориентированное и функциональное программирование . Его часто называют языком «с батарейками» из-за его обширной стандартной библиотеки . [34] [35]
Гвидо ван Россум начал работать над Python в конце 1980-х годов как преемником языка программирования ABC и впервые выпустил его в 1991 году как Python 0.9.0. [36] Python 2.0 был выпущен в 2000 году. Python 3.0, выпущенный в 2008 году, представлял собой основную версию, не полностью обратно совместимую с более ранними версиями. Python 2.7.18, выпущенный в 2020 году, был последней версией 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
[edit]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]
Every Python release since 3.5 has added some syntax to the language. 3.10 added the |
union type operator [65] 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
.
Notable changes in 3.11 from 3.10 include increased program execution speed and improved error reporting.[66] 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.
As of April 2024,[update] Python 3.12 is the stable release, and 3.12 is the only version with active (as opposed to just security) support.
Since 27 June 2023[update], 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).
Design philosophy and features
[edit]Python is a multi-paradigm programming language. Object-oriented programming and structured programming are fully supported, and many of their features support functional programming and aspect-oriented programming (including metaprogramming[71] and metaobjects).[72] Many other paradigms are supported via extensions, including design by contract[73][74] and logic programming.[75]
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
,map
andreduce
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]
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Readability counts.
However, Python features regularly violate these principles and have received criticism for adding unnecessary language bloat.[80] Responses to these criticisms are that the Zen of Python is a guideline rather than a rule.[81] The addition of some new features had been so controversial that Guido van Rossum resigned as Benevolent Dictator for Life following vitriol over the addition of the assignment expression operator in Python 3.8.[82][83]
Nevertheless, rather than building all of its functionality into its core, Python was designed to be highly extensible via modules. This compact modularity has made it particularly popular as a means of adding programmable interfaces to existing applications. Van Rossum's vision of a small core language with a large standard library and easily extensible interpreter stemmed from his frustrations with ABC, which espoused the opposite approach.[42]
Python claims to strive for a simpler, less-cluttered syntax and grammar while giving developers a choice in their coding methodology. In contrast to Perl's "there is more than one way to do it" motto, Python embraces a "there should be one—and preferably only one—obvious way to do it." philosophy.[79] In practice, however, Python provides many ways to achieve the same task. There are, for example, at least three ways to format a string literal, with no certainty as to which one a programmer should use.[84] Alex Martelli, a Fellow at the Python Software Foundation and Python book author, wrote: "To describe something as 'clever' is not considered a compliment in the Python culture."[85]
Python's developers usually strive to avoid premature optimization and reject patches to non-critical parts of the CPython reference implementation that would offer marginal increases in speed at the cost of clarity.[86] Execution speed can be improved by moving speed-critical functions to extension modules written in languages such as C, or by using a just-in-time compiler like PyPy. It is also possible to cross-compile to other languages, but it either doesn't provide the full speed-up that might be expected, since Python is a very dynamic language, or a restricted subset of Python is compiled, and possibly semantics are slightly changed.[87]
Python's developers aim for it to be fun to use. This is reflected in its name—a tribute to the British comedy group Monty Python[88]—and in occasionally playful approaches to tutorials and reference materials, such as the use of the terms "spam" and "eggs" (a reference to a Monty Python sketch) in examples, instead of the often-used "foo" and "bar".[89][90] A common neologism in the Python community is pythonic, which has a wide range of meanings related to program style. "Pythonic" code may use Python idioms well, be natural or show fluency in the language, or conform with Python's minimalist philosophy and emphasis on readability. Code that is difficult to understand or reads like a rough transcription from another programming language is called unpythonic.[91]
Syntax and semantics
[edit]Python is meant to be an easily readable language. Its formatting is visually uncluttered and often uses English keywords where other languages use punctuation. Unlike many other languages, it does not use curly brackets to delimit blocks, and semicolons after statements are allowed but rarely used. It has fewer syntactic exceptions and special cases than C or Pascal.[92]
Indentation
[edit]Python uses whitespace indentation, rather than curly brackets or keywords, to delimit blocks. An increase in indentation comes after certain statements; a decrease in indentation signifies the end of the current block.[93] Thus, the program's visual structure accurately represents its semantic structure.[94] This feature is sometimes termed the off-side rule. Some other languages use indentation this way; but in most, indentation has no semantic meaning. The recommended indent size is four spaces.[95]
Statements and control flow
[edit]Python's statements include:
- The assignment statement, using a single equals sign
=
- The
if
statement, which conditionally executes a block of code, along withelse
andelif
(a contraction of else-if) - The
for
statement, which iterates over an iterable object, capturing each element to a local variable for use by the attached block - The
while
statement, which executes a block of code as long as its condition is true - The
try
statement, which allows exceptions raised in its attached code block to be caught and handled byexcept
clauses (or new syntaxexcept*
in Python 3.11 for exception groups[96]); it also ensures that clean-up code in afinally
block is always run regardless of how the block exits - The
raise
statement, used to raise a specified exception or re-raise a caught exception - The
class
statement, which executes a block of code and attaches its local namespace to a class, for use in object-oriented programming - The
def
statement, which defines a function or method - The
with
statement, which encloses a code block within a context manager (for example, acquiring a lock before it is run, then releasing the lock; or opening and closing a file), allowing resource-acquisition-is-initialization (RAII)-like behavior and replacing a common try/finally idiom[97] - The
break
statement, which exits a loop - The
continue
statement, which skips the rest of the current iteration and continues with the next - The
del
statement, which removes a variable—deleting the reference from the name to the value, and producing an error if the variable is referred to before it is redefined - The
pass
statement, serving as a NOP, syntactically needed to create an empty code block - The
assert
statement, used in debugging to check for conditions that should apply - The
yield
statement, which returns a value from a generator function (and also an operator); used to implement coroutines - The
return
statement, used to return a value from a function - The
import
andfrom
statements, used to import modules whose functions or variables can be used in the current program - The
match
andcase
statements, an analog of the switch statement construct, that compares an expression against one or more cases as a control-of-flow measure.
The assignment statement (=
) binds a name as a reference to a separate, dynamically allocated object. Variables may subsequently be rebound at any time to any object. In Python, a variable name is a generic reference holder without a fixed data type; however, it always refers to some object with a type. This is called dynamic typing—in contrast to statically-typed languages, where each variable may contain only a value of a certain type.
Python does not support tail call optimization or first-class continuations, and, according to Van Rossum, it never will.[98][99] However, better support for coroutine-like functionality is provided by extending Python's generators.[100] Before 2.5, generators were lazy iterators; data was passed unidirectionally out of the generator. From Python 2.5 on, it is possible to pass data back into a generator function; and from version 3.3, it can be passed through multiple stack levels.[101]
Expressions
[edit]Python's expressions include:
- The
+
,-
, and*
operators for mathematical addition, subtraction, and multiplication are similar to other languages, but the behavior of division differs. There are two types of divisions in Python: floor division (or integer division)//
and floating-point/
division.[102] Python uses the**
operator for exponentiation. - Python uses the
+
operator for string concatenation. Python uses the*
operator for duplicating a string a specified number of times. - The
@
infix operator. It is intended to be used by libraries such as NumPy for matrix multiplication.[103][104] - The syntax
:=
, called the "walrus operator", was introduced in Python 3.8. It assigns values to variables as part of a larger expression.[105] - In Python,
==
compares by value. Python'sis
operator may be used to compare object identities (comparison by reference), and comparisons may be chained—for example,a <= b <= c
. - Python uses
and
,or
, andnot
as Boolean operators. - Python has a type of expression named a list comprehension, and a more general expression named a generator expression.[77]
- Anonymous functions are implemented using lambda expressions; however, there may be only one expression in each body.
- Conditional expressions are written as
x if c else y
[106] (different in order of operands from thec ? x : y
operator common to many other languages). - Python makes a distinction between lists and tuples. Lists are written as
[1, 2, 3]
, are mutable, and cannot be used as the keys of dictionaries (dictionary keys must be immutable in Python). Tuples, written as(1, 2, 3)
, are immutable and thus can be used as keys of dictionaries, provided all of the tuple's elements are immutable. The+
operator can be used to concatenate two tuples, which does not directly modify their contents, but produces a new tuple containing the elements of both. Thus, given the variablet
initially equal to(1, 2, 3)
, executingt = t + (4, 5)
first evaluatest + (4, 5)
, which yields(1, 2, 3, 4, 5)
, which is then assigned back tot
—thereby effectively "modifying the contents" oft
while conforming to the immutable nature of tuple objects. Parentheses are optional for tuples in unambiguous contexts.[107] - Python features sequence unpacking where multiple expressions, each evaluating to anything that can be assigned (to a variable, writable property, etc.) are associated in an identical manner to that forming tuple literals—and, as a whole, are put on the left-hand side of the equal sign in an assignment statement. The statement expects an iterable object on the right-hand side of the equal sign that produces the same number of values as the provided writable expressions; when iterated through them, it assigns each of the produced values to the corresponding expression on the left.[108]
- Python has a "string format" operator
%
that functions analogously toprintf
format strings in C—e.g."spam=%s eggs=%d" % ("blah", 2)
evaluates to"spam=blah eggs=2"
. In Python 2.6+ and 3+, this was supplemented by theformat()
method of thestr
class, e.g."spam={0} eggs={1}".format("blah", 2)
. Python 3.6 added "f-strings":spam = "blah"; eggs = 2; f'spam={spam} eggs={eggs}'
.[109] - Strings in Python can be concatenated by "adding" them (with the same operator as for adding integers and floats), e.g.
"spam" + "eggs"
returns"spameggs"
. If strings contain numbers, they are added as strings rather than integers, e.g."2" + "2"
returns"22"
. - Python has various string literals:
- Delimited by single or double quotes; unlike in Unix shells, Perl, and Perl-influenced languages, single and double quotes work the same. Both use the backslash (
\
) as an escape character. String interpolation became available in Python 3.6 as "formatted string literals".[109] - Triple-quoted (beginning and ending with three single or double quotes), which may span multiple lines and function like here documents in shells, Perl, and Ruby.
- Raw string varieties, denoted by prefixing the string literal with
r
. Escape sequences are not interpreted; hence raw strings are useful where literal backslashes are common, such as regular expressions and Windows-style paths. (Compare "@
-quoting" in C#.)
- Delimited by single or double quotes; unlike in Unix shells, Perl, and Perl-influenced languages, single and double quotes work the same. Both use the backslash (
- Python has array index and array slicing expressions in lists, denoted as
a[key]
,a[start:stop]
ora[start:stop:step]
. Indexes are zero-based, and negative indexes are relative to the end. Slices take elements from the start index up to, but not including, the stop index. The third slice parameter, called step or stride, allows elements to be skipped and reversed. Slice indexes may be omitted—for example,a[:]
returns a copy of the entire list. Each element of a slice is a shallow copy.
In Python, a distinction between expressions and statements is rigidly enforced, in contrast to languages such as Common Lisp, Scheme, or Ruby. This leads to duplicating some functionality. For example:
- List comprehensions vs.
for
-loops - Conditional expressions vs.
if
blocks - The
eval()
vs.exec()
built-in functions (in Python 2,exec
is a statement); the former is for expressions, the latter is for statements
Statements cannot be a part of an expression—so list and other comprehensions or lambda expressions, all being expressions, cannot contain statements. A particular case is that an assignment statement such as a = 1
cannot form part of the conditional expression of a conditional statement.
Methods
[edit]Methods on objects are functions attached to the object's class; the syntax instance.method(argument)
is, for normal methods and functions, syntactic sugar for Class.method(instance, argument)
. Python methods have an explicit self
parameter to access instance data, in contrast to the implicit self (or this
) in some other object-oriented programming languages (e.g., C++, Java, Objective-C, Ruby).[110] Python also provides methods, often called dunder methods (due to their names beginning and ending with double-underscores), to allow user-defined classes to modify how they are handled by native operations including length, comparison, in arithmetic operations and type conversion.[111]
Typing
[edit]Python uses duck typing and has typed objects but untyped variable names. Type constraints are not checked at compile time; rather, operations on an object may fail, signifying that it is not of a suitable type. Despite being dynamically typed, Python is strongly typed, forbidding operations that are not well-defined (for example, adding a number to a string) rather than silently attempting to make sense of them.
Python allows programmers to define their own types using classes, most often used for object-oriented programming. New instances of classes are constructed by calling the class (for example, SpamClass()
or EggsClass()
), and the classes are instances of the metaclass type
(itself an instance of itself), allowing metaprogramming and reflection.
Before version 3.0, Python had two kinds of classes (both using the same syntax): old-style and new-style;[112] current Python versions only support the semantics of the new style.
Python supports optional type annotations.[4][113] These annotations are not enforced by the language, but may be used by external tools such as mypy to catch errors.[114][115] Mypy also supports a Python compiler called mypyc, which leverages type annotations for optimization.[116]
Type | Mutability | Description | Syntax examples |
---|---|---|---|
bool
|
immutable | Boolean value | True False
|
bytearray
|
mutable | Sequence of bytes | bytearray(b'Some ASCII') bytearray(b"Some ASCII") bytearray([119, 105, 107, 105])
|
bytes
|
immutable | Sequence of bytes | b'Some ASCII' b"Some ASCII" bytes([119, 105, 107, 105])
|
complex
|
immutable | Complex number with real and imaginary parts | 3+2.7j 3 + 2.7j
|
dict
|
mutable | Associative array (or dictionary) of key and value pairs; can contain mixed types (keys and values), keys must be a hashable type | {'key1': 1.0, 3: False} {}
|
types.EllipsisType
|
immutable | An ellipsis placeholder to be used as an index in NumPy arrays | ... Ellipsis
|
float
|
immutable | Double-precision floating-point number. The precision is machine-dependent but in practice is generally implemented as a 64-bit IEEE 754 number with 53 bits of precision.[117] |
|
frozenset
|
immutable | Unordered set, contains no duplicates; can contain mixed types, if hashable | frozenset([4.0, 'string', True])
|
int
|
immutable | Integer of unlimited magnitude[118] | 42
|
list
|
mutable | List, can contain mixed types | [4.0, 'string', True] []
|
types.NoneType
|
immutable | An object representing the absence of a value, often called null in other languages | None
|
types.NotImplementedType
|
immutable | A placeholder that can be returned from overloaded operators to indicate unsupported operand types. | NotImplemented
|
range
|
immutable | An immutable sequence of numbers commonly used for looping a specific number of times in for loops[119]
|
range(−1, 10) range(10, −5, −2)
|
set
|
mutable | Unordered set, contains no duplicates; can contain mixed types, if hashable | {4.0, 'string', True} set()
|
str
|
immutable | A character string: sequence of Unicode codepoints | 'Wikipedia' "Wikipedia" """Spanning
multiple
lines"""
Spanning
multiple
lines
|
tuple
|
immutable | Can contain mixed types | (4.0, 'string', True) ('single element',) ()
|
Arithmetic operations
[edit]Python has the usual symbols for arithmetic operators (+
, -
, *
, /
), the floor division operator //
and the modulo operation %
(where the remainder can be negative, e.g. 4 % -3 == -2
). It also has **
for exponentiation, e.g. 5**3 == 125
and 9**0.5 == 3.0
, and a matrix‑multiplication operator @
.[120] These operators work like in traditional math; with the same precedence rules, the operators infix (+
and -
can also be unary to represent positive and negative numbers respectively).
The division between integers produces floating-point results. The behavior of division has changed significantly over time:[121]
- Current Python (i.e. since 3.0) changed
/
to always be floating-point division, e.g.5/2 == 2.5
. - The floor division
//
operator was introduced. So7//3 == 2
,-7//3 == -3
,7.5//3 == 2.0
and-7.5//3 == -3.0
. Addingfrom __future__ import division
causes a module used in Python 2.7 to use Python 3.0 rules for division (see above).
In Python terms, /
is true division (or simply division), and //
is floor division. /
before version 3.0 is classic division.[121]
Rounding towards negative infinity, though different from most languages, adds consistency. For instance, it means that the equation (a + b)//b == a//b + 1
is always true. It also means that the equation b*(a//b) + a%b == a
is valid for both positive and negative values of a
. However, maintaining the validity of this equation means that while the result of a%b
is, as expected, in the half-open interval [0, b), where b
is a positive integer, it has to lie in the interval (b, 0] when b
is negative.[122]
Python provides a round
function for rounding a float to the nearest integer. For tie-breaking, Python 3 uses round to even: round(1.5)
and round(2.5)
both produce 2
.[123] Versions before 3 used round-away-from-zero: round(0.5)
is 1.0
, round(-0.5)
is −1.0
.[124]
Python allows Boolean expressions with multiple equality relations in a manner that is consistent with general use in mathematics. For example, the expression a < b < c
tests whether a
is less than b
and b
is less than c
.[125] C-derived languages interpret this expression differently: in C, the expression would first evaluate a < b
, resulting in 0 or 1, and that result would then be compared with c
.[126]
Python uses arbitrary-precision arithmetic for all integer operations. The Decimal
type/class in the decimal
module provides decimal floating-point numbers to a pre-defined arbitrary precision and several rounding modes.[127] The Fraction
class in the fractions
module provides arbitrary precision for rational numbers.[128]
Due to Python's extensive mathematics library, and the third-party library NumPy that further extends the native capabilities, it is frequently used as a scientific scripting language to aid in problems such as numerical data processing and manipulation.[129][130]
Programming examples
[edit]print('Hello, world!')
Program to calculate the factorial of a positive integer:
n = int(input('Type a number, and its factorial will be printed: '))
if n < 0:
raise ValueError('You must enter a non-negative integer')
factorial = 1
for i in range(2, n + 1):
factorial *= i
print(factorial)
Libraries
[edit]Python's large standard library[131] provides tools suited to many tasks and is commonly cited as one of its greatest strengths. For Internet-facing applications, many standard formats and protocols such as MIME and HTTP are supported. It includes modules for creating graphical user interfaces, connecting to relational databases, generating pseudorandom numbers, arithmetic with arbitrary-precision decimals,[127] manipulating regular expressions, and unit testing.
Some parts of the standard library are covered by specifications—for example, the Web Server Gateway Interface (WSGI) implementation wsgiref
follows PEP 333[132]—but most are specified by their code, internal documentation, and test suites. However, because most of the standard library is cross-platform Python code, only a few modules need altering or rewriting for variant implementations.
As of 17 March 2024,[update] the Python Package Index (PyPI), the official repository for third-party Python software, contains over 523,000[133] packages with a wide range of functionality, including:
Development environments
[edit]Most Python implementations (including CPython) include a read–eval–print loop (REPL), permitting them to function as a command line interpreter for which users enter statements sequentially and receive results immediately.
Python also comes with an Integrated development environment (IDE) called IDLE, which is more beginner-oriented.
Other shells, including IDLE and IPython, add further abilities such as improved auto-completion, session state retention, and syntax highlighting.
As well as standard desktop integrated development environments including PyCharm, IntelliJ Idea, Visual Studio Code etc, there are web browser-based IDEs, including SageMath, for developing science- and math-related programs; PythonAnywhere, a browser-based IDE and hosting environment; and Canopy IDE, a commercial IDE emphasizing scientific computing.[134]
Implementations
[edit]Reference implementation
[edit]CPython is the reference implementation of Python. It is written in C, meeting the C89 standard (Python 3.11 uses C11[135]) with several select C99 features. CPython includes its own C extensions, but third-party extensions are not limited to older C versions—e.g. they can be implemented with C11 or C++.[136][137] CPython compiles Python programs into an intermediate bytecode[138] which is then executed by its virtual machine.[139] CPython is distributed with a large standard library written in a mixture of C and native Python, and is available for many platforms, including Windows (starting with Python 3.9, the Python installer deliberately fails to install on Windows 7 and 8;[140][141] Windows XP was supported until Python 3.5) and most modern Unix-like systems, including macOS (and Apple M1 Macs, since Python 3.9.1, with experimental installer), with unofficial support for VMS.[142] Platform portability was one of its earliest priorities.[143] (During Python 1 and 2 development, even OS/2 and Solaris were supported,[144] but support has since been dropped for many platforms.)
Python, since 3.7, only supports operating systems with multi-threading support.
Other implementations
[edit]- PyPy is a fast, compliant interpreter of Python 2.7 and 3.8.[145][146] Its just-in-time compiler often brings a significant speed improvement over CPython, but some libraries written in C cannot be used with it.[147]
- Stackless Python is a significant fork of CPython that implements microthreads; it does not use the call stack in the same way, thus allowing massively concurrent programs. PyPy also has a stackless version.[148]
- MicroPython and CircuitPython are Python 3 variants optimized for microcontrollers, including Lego Mindstorms EV3.[149]
- Pyston is a variant of the Python runtime that uses just-in-time compilation to speed up the execution of Python programs.[150]
- Cinder is a performance-oriented fork of CPython 3.8 that contains a number of optimizations, including bytecode inline caching, eager evaluation of coroutines, a method-at-a-time JIT, and an experimental bytecode compiler.[151]
- Snek[152][153][154] Embedded Computing Language (compatible with e.g. 8-bit AVR microcontrollers such as ATmega 328P-based Arduino, as well as larger ones compatible with MicroPython) "is Python-inspired, but it is not Python. It is possible to write Snek programs that run under a full Python system, but most Python programs will not run under Snek."[155] It is an imperative language not including OOP / classes, unlike Python, and simplifying to one number type with 32-bit single-precision (similar to JavaScript, except smaller).
Unsupported implementations
[edit]Other just-in-time Python compilers have been developed, but are now unsupported:
- Google began a project named Unladen Swallow in 2009, with the aim of speeding up the Python interpreter five-fold by using the LLVM, and of improving its multithreading ability to scale to thousands of cores,[156] while ordinary implementations suffer from the global interpreter lock.
- Psyco is a discontinued just-in-time specializing compiler that integrates with CPython and transforms bytecode to machine code at runtime. The emitted code is specialized for certain data types and is faster than the standard Python code. Psyco does not support Python 2.7 or later.
- PyS60 was a Python 2 interpreter for Series 60 mobile phones released by Nokia in 2005. It implemented many of the modules from the standard library and some additional modules for integrating with the Symbian operating system. The Nokia N900 also supports Python with GTK widget libraries, enabling programs to be written and run on the target device.[157]
Cross-compilers to other languages
[edit]There are several compilers/transpilers to high-level object languages, with either unrestricted Python, a restricted subset of Python, or a language similar to Python as the source language:
- Brython,[158] Transcrypt[159][160] and Pyjs (latest release in 2012) compile Python to JavaScript.
- Codon compiles a subset of statically typed Python[161] to machine code (via LLVM) and supports native multithreading.[162]
- Cython compiles (a superset of) Python to C. The resulting code is also usable with Python via direct C-level API calls into the Python interpreter.
- PyJL compiles/transpiles a subset of Python to "human-readable, maintainable, and high-performance Julia source code".[87] Despite claiming high performance, no tool can claim to do that for arbitrary Python code; i.e. it's known not possible to compile to a faster language or machine code. Unless semantics of Python are changed, but in many cases speedup is possible with few or no changes in the Python code. The faster Julia source code can then be used from Python, or compiled to machine code, and based that way.
- Nuitka compiles Python into C.[163]
- Numba uses LLVM to compile a subset of Python to machine code.
- Pythran compiles a subset of Python 3 to C++ (C++11).[164]
- RPython can be compiled to C, and is used to build the PyPy interpreter of Python.
- The Python → 11l → C++ transpiler[165] compiles a subset of Python 3 to C++ (C++17).
Specialized:
- MyHDL is a Python-based hardware description language (HDL), that converts MyHDL code to Verilog or VHDL code.
Older projects (or not to be used with Python 3.x and latest syntax):
- Google's Grumpy (latest release in 2017) transpiles Python 2 to Go.[166][167][168]
- IronPython allows running Python 2.7 programs (and an alpha, released in 2021, is also available for "Python 3.4, although features and behaviors from later versions may be included"[169]) on the .NET Common Language Runtime.[170]
- Jython compiles Python 2.7 to Java bytecode, allowing the use of the Java libraries from a Python program.[171]
- Pyrex (latest release in 2010) and Shed Skin (latest release in 2013) compile to C and C++ respectively.
Performance
[edit]Performance comparison of various Python implementations on a non-numerical (combinatorial) workload was presented at EuroSciPy '13.[172] Python's performance compared to other programming languages is also benchmarked by The Computer Language Benchmarks Game.[173]
Development
[edit]Python's development is conducted largely through the Python Enhancement Proposal (PEP) process, the primary mechanism for proposing major new features, collecting community input on issues, and documenting Python design decisions.[174] Python coding style is covered in PEP 8.[175] Outstanding PEPs are reviewed and commented on by the Python community and the steering council.[174]
Enhancement of the language corresponds with the development of the CPython reference implementation. The mailing list python-dev is the primary forum for the language's development. Specific issues were originally discussed in the Roundup bug tracker hosted at by the foundation.[176] In 2022, all issues and discussions were migrated to GitHub.[177] Development originally took place on a self-hosted source-code repository running Mercurial, until Python moved to GitHub in January 2017.[178]
CPython's public releases come in three types, distinguished by which part of the version number is incremented:
- Backward-incompatible versions, where code is expected to break and needs to be manually ported. The first part of the version number is incremented. These releases happen infrequently—version 3.0 was released 8 years after 2.0. According to Guido van Rossum, a version 4.0 is very unlikely to ever happen.[179]
- Major or "feature" releases are largely compatible with the previous version but introduce new features. The second part of the version number is incremented. Starting with Python 3.9, these releases are expected to happen annually.[180][181] Each major version is supported by bug fixes for several years after its release.[182]
- Bugfix releases,[183] which introduce no new features, occur about every 3 months and are made when a sufficient number of bugs have been fixed upstream since the last release. Security vulnerabilities are also patched in these releases. The third and final part of the version number is incremented.[183]
Many alpha, beta, and release-candidates are also released as previews and for testing before final releases. Although there is a rough schedule for each release, they are often delayed if the code is not ready. Python's development team monitors the state of the code by running the large unit test suite during development.[184]
The major academic conference on Python is PyCon. There are also special Python mentoring programs, such as PyLadies.
Python 3.12 removed wstr
meaning Python extensions[185] need to be modified,[186] and 3.10 added pattern matching to the language.[187]
Python 3.12 dropped some outdated modules, and more will be dropped in the future, deprecated as of 3.13; already deprecated array 'u' format code will emit DeprecationWarning
since 3.13 and will be removed in Python 3.16. The 'w' format code should be used instead. Part of ctypes is also deprecated and http.server.CGIHTTPRequestHandler
will emit a DeprecationWarning, and will be removed in 3.15. Using that code already has a high potential for both security and functionality bugs. Parts of the typing module are deprecated, e.g. creating a typing.NamedTuple
class using keyword arguments to denote the fields and such (and more) will be disallowed in Python 3.15.
API documentation generators
[edit]Tools that can generate documentation for Python API include pydoc (available as part of the standard library), Sphinx, Pdoc and its forks, Doxygen and Graphviz, among others.[188]
Naming
[edit]Название Python происходит от имени британской комедийной группы Monty Python , которой пользовался создатель Python Гвидо ван Россум при разработке языка. Ссылки на Монти Пайтон часто встречаются в коде и культуре Python; [189] например, метасинтаксические переменные, часто используемые в литературе по Python, — это spam и egg вместо традиционных foo и bar . [189] [190] Официальная документация Python также содержит различные ссылки на подпрограммы Monty Python. [191] [192] Пользователей Python иногда называют «Pythonistas». [193]
Префикс Py- используется, чтобы показать, что что-то связано с Python. Примеры использования этого префикса в именах приложений или библиотек Python включают к Python ( обычно Pygame — привязку SDL используемую для создания игр); PyQt и PyGTK , которые связывают Qt и GTK с Python соответственно; и PyPy — реализация Python, изначально написанная на Python.
Популярность
[ редактировать ]С 2003 года Python стабильно входит в десятку самых популярных языков программирования в индексе сообщества программистов TIOBE , где по состоянию на декабрь 2022 г. [update] это был самый популярный язык (опередивший C, C++ и Java ). [40] Он был выбран языком программирования года (за «самый высокий рост рейтингов за год») в 2007, 2010, 2018 и 2020 годах (единственный язык, который сделал это четыре раза по состоянию на 2020 год). [update][194] ).
Крупные организации, использующие Python, включают Wikipedia , Google , [195] Yahoo! , [196] ЦЕРН , [197] НАСА , [198] Фейсбук , [199] Амазон , Инстаграм , [200] Спотифай , [201] и некоторые более мелкие организации, такие как ILM [202] и ИТА . [203] Социальная новостная сеть Reddit была написана в основном на Python. [204]
Использование
[ редактировать ]Python может служить языком сценариев для веб-приложений , например, через mod_wsgi для веб-сервера Apache . [205] С интерфейсом шлюза веб-сервера стандартный API был разработан для облегчения работы этих приложений. Веб-фреймворки, такие как Django , Pylons , Pyramid , TurboGears , web2py , Tornado , Flask , Bottle и Zope , помогают разработчикам проектировать и поддерживать сложные приложения. Pyjs и IronPython можно использовать для разработки клиентских приложений на основе Ajax. SQLAlchemy можно использовать в качестве преобразователя данных в реляционную базу данных. Twisted — это платформа для программирования связи между компьютерами, которая используется (например) Dropbox .
Такие библиотеки, как NumPy , SciPy и Matplotlib, позволяют эффективно использовать Python в научных вычислениях. [206] [207] со специализированными библиотеками, такими как Biopython и Astropy, обеспечивающими функциональность, специфичную для предметной области. SageMath — это система компьютерной алгебры с интерфейсом ноутбука , программируемым на Python: ее библиотека охватывает многие аспекты математики , включая алгебру , комбинаторику , числовую математику , теорию чисел и исчисление . [208] OpenCV имеет привязки Python с богатым набором функций для компьютерного зрения и обработки изображений . [209]
Python обычно используется в проектах искусственного интеллекта и проектах машинного обучения с помощью таких библиотек, как TensorFlow , Keras , Pytorch , scikit-learn и языка логики ProbLog . [210] [211] [212] [213] [214] Python как язык сценариев с модульной архитектурой , простым синтаксисом и богатыми инструментами обработки текста часто используется для обработки естественного языка . [215]
Комбинация Python и Пролога оказалась особенно полезной для приложений искусственного интеллекта, поскольку Пролог обеспечивает возможности представления знаний и рассуждения. Система Янус, в частности, использует сходство между этими двумя языками. отчасти из-за использования динамической типизации и простой рекурсивной природы их структуры данных. Типичные применения этой комбинации включают обработку естественного языка, визуальные запросы. ответы, геопространственные рассуждения и обработка семантических веб-данных. [216] [217] Система Natlog, реализованная на Python, использует грамматики определенных предложений (DCG) в качестве генераторов подсказок для генераторов преобразования текста в текст, таких как GPT3, и генераторов преобразования текста в изображение, таких как DALL-E или Stable Diffusion. [218]
Python также можно использовать для графического пользовательского интерфейса (GUI) с помощью таких библиотек, как Tkinter . [219] [220]
Python был успешно встроен во многие программные продукты в качестве языка сценариев, в том числе в программное обеспечение для метода конечных элементов , такое как Abaqus , средства параметрического 3D-моделирования, такие как FreeCAD , пакеты 3D-анимации, такие как 3ds Max , Blender , Cinema 4D , Lightwave , Houdini , Maya , modo. , MotionBuilder , Softimage , наборщик визуальных эффектов Nuke , программы 2D-изображений, такие как GIMP , [221] Inkscape , Scribus и Paint Shop Pro , [222] и нотной записи, программы такие как партитура и капелла . GNU Debugger использует Python как красивый принтер для отображения сложных структур, таких как контейнеры C++. Esri пропагандирует Python как лучший выбор для написания скриптов в ArcGIS . [223] Он также использовался в нескольких видеоиграх. [224] [225] и был принят в качестве первого из трех доступных языков программирования в Google App Engine , двумя другими являются Java и Go . [226]
Многие операционные системы включают Python в качестве стандартного компонента. Он поставляется с большинством дистрибутивов Linux . [227] AmigaOS 4 (с использованием Python 2.7), FreeBSD (в виде пакета), NetBSD и OpenBSD (в виде пакета) и может использоваться из командной строки (терминала). Многие дистрибутивы Linux используют установщики, написанные на Python: Ubuntu использует установщик Ubiquity , а Red Hat Linux и Fedora Linux используют установщик Anaconda . Gentoo Linux использует Python в своей системе управления пакетами Portage .
Python широко используется в индустрии информационной безопасности , в том числе при разработке эксплойтов. [228] [229]
Большая часть программного обеспечения Sugar для одного ноутбука на ребенка XO, разработанного в Sugar Labs по состоянию на 2008 год. [update], написан на Python. [230] В проекте Raspberry Pi одноплатного компьютера Python был принят в качестве основного языка пользовательского программирования.
LibreOffice включает Python и намерен заменить Java на Python. Его поставщик сценариев Python является основной функцией. [231] начиная с версии 4.0 от 7 февраля 2013 г.
Языки под влиянием Python
[ редактировать ]Дизайн и философия Python повлияли на многие другие языки программирования:
- Boo использует отступы, аналогичный синтаксис и аналогичную объектную модель. [232]
- Cobra использует отступы и аналогичный синтаксис, а в ее документе «Благодарности» Python стоит на первом месте среди языков, оказавших на него влияние. [233]
- CoffeeScript , язык программирования, который кросс-компилируется в JavaScript, имеет синтаксис, вдохновленный Python.
- ECMAScript — JavaScript заимствовал итераторы и генераторы из Python. [234]
- GDScript — язык сценариев, очень похожий на Python, встроенный в игровой движок Godot . [235]
- Go создан для «скорости работы на таком динамическом языке, как Python». [236] и использует тот же синтаксис для нарезки массивов.
- Groovy руководствовался желанием перенести философию проектирования Python в Java . [237]
- Джулия была разработана так, чтобы быть «такой же пригодной для общего программирования, как и Python». [28]
- Mojo — нестрогий [29] [238] расширенный набор Python (например, все еще отсутствуют классы и добавлено, например, struct ). [239]
- Ним использует отступы и аналогичный синтаксис. [240]
- Юкихиро Создатель Ruby Мацумото сказал: «Мне нужен был язык сценариев, который был бы более мощным, чем Perl, и более объектно-ориентированным, чем Python. Вот почему я решил разработать свой собственный язык». [241]
- Swift , язык программирования, разработанный Apple, имеет синтаксис, вдохновленный Python. [242]
- Kotlin сочетает в себе функции Python и Java, минимизируя шаблонный код для повышения эффективности разработки. [243]
Практика разработки Python также была эмулирована другими языками. Например, практика требования документа, описывающего обоснование и проблемы, связанные с изменением языка (в Python, PEP), также используется в Tcl . [244] Эрланг , [245] и Свифт. [246]
См. также
[ редактировать ]- Синтаксис и семантика Python
- пип (менеджер пакетов)
- Список языков программирования
- История языков программирования
- Сравнение языков программирования
Ссылки
[ редактировать ]- ^ «Общие часто задаваемые вопросы по Python — документация по Python 3» . docs.python.org . Проверено 7 июля 2024 г.
- ^ «Python 0.9.1 часть 21.01» . Архивы alt.sources. Архивировано из оригинала 11 августа 2021 года . Проверено 11 августа 2021 г.
- ^ «Почему Python является динамическим языком, а также строго типизированным языком» . Питон Вики . Архивировано из оригинала 14 марта 2021 года . Проверено 27 января 2021 г.
- ^ Перейти обратно: а б «PEP 483 – Теория подсказок типов» . Python.org . Архивировано из оригинала 14 июня 2020 года . Проверено 14 июня 2018 г.
- ^ «PEP 11 — поддержка платформы CPython | peps.python.org» . Предложения по улучшению Python (PEP) . Проверено 22 апреля 2024 г.
- ^ «PEP 738 – Добавление Android в качестве поддерживаемой платформы | peps.python.org» . Предложения по улучшению Python (PEP) . Проверено 19 мая 2024 г.
- ^ «Загрузить Python для других платформ» . Python.org . Архивировано из оригинала 27 ноября 2020 года . Проверено 18 августа 2023 г.
- ^ «test — Пакет регрессионных тестов для Python — документация Python 3.7.13» . docs.python.org . Архивировано из оригинала 17 мая 2022 года . Проверено 17 мая 2022 г.
- ^ «платформа — доступ к идентификационным данным базовой платформы — документация Python 3.10.4» . docs.python.org . Архивировано из оригинала 17 мая 2022 года . Проверено 17 мая 2022 г.
- ^ Холт, Мур (30 марта 2014 г.). «PEP 0441 — Улучшение поддержки приложений Python ZIP» . Архивировано из оригинала 26 декабря 2018 года . Проверено 12 ноября 2015 г.
- ^ «Язык звездных жаворонков» . Архивировано из оригинала 15 июня 2020 года . Проверено 25 мая 2019 г.
- ^ Перейти обратно: а б «Почему вообще был создан Python?» . Общие часто задаваемые вопросы по Python . Фонд программного обеспечения Python. Архивировано из оригинала 24 октября 2012 года . Проверено 22 марта 2007 г.
У меня был обширный опыт внедрения интерпретируемого языка в группе ABC в CWI, и, работая с этой группой, я многому научился в области языкового проектирования. Это источник многих функций Python, включая использование отступов для группировки операторов и включение типов данных очень высокого уровня (хотя в Python все детали разные).
- ^ «Справочное руководство по Ada 83 (оператор повышения)» . Архивировано из оригинала 22 октября 2019 года . Проверено 7 января 2020 г.
- ^ Перейти обратно: а б Кучлинг, Эндрю М. (22 декабря 2006 г.). «Интервью с Гвидо ван Россумом (июль 1998 г.)» . amk.ca. Архивировано из оригинала 1 мая 2007 года . Проверено 12 марта 2012 г.
Я провел лето в Центре системных исследований DEC, где меня познакомили с Modula-2+; Примерно в то же время там писался итоговый отчет «Модулы-3». То, что я узнал там позже, проявилось в обработке исключений Python, модулях и том факте, что методы явно содержат «self» в своем списке параметров. Нарезка строк пришла из Algol-68 и Icon.
- ^ Перейти обратно: а б с «itertools — Функции, создающие итераторы для эффективного циклирования — документация Python 3.7.1» . docs.python.org . Архивировано из оригинала 14 июня 2020 года . Проверено 22 ноября 2016 г.
Этот модуль реализует ряд строительных блоков итераторов, вдохновленных конструкциями из APL, Haskell и SML.
- ^ ван Россум, Гвидо (1993). «Введение в Python для программистов UNIX/C». Материалы конференции NLUUG Najaarsconferentie (Голландская группа пользователей UNIX) . CiteSeerX 10.1.1.38.2023 .
хотя конструкция C далека от идеала, его влияние на Python значительно.
- ^ Перейти обратно: а б «Классы» . Учебник по Python . Фонд программного обеспечения Python. Архивировано из оригинала 23 октября 2012 года . Проверено 20 февраля 2012 г.
Это смесь механизмов классов, имеющихся в C++ и Modula-3.
- ^ Лунд, Фредрик. «Вызов по объекту» . effbot.org . Архивировано из оригинала 23 ноября 2019 года . Проверено 21 ноября 2017 г.
замените «CLU» на «Python», «запись» на «экземпляр» и «процедуру» на «функцию или метод», и вы получите довольно точное описание объектной модели Python.
- ^ Симионато, Микеле. «Порядок разрешения методов Python 2.3» . Фонд программного обеспечения Python. Архивировано из оригинала 20 августа 2020 года . Проверено 29 июля 2014 г.
Сам метод C3 не имеет ничего общего с Python, так как его придумали люди, работавшие над Диланом, и он описан в статье, предназначенной для шепелявителей.
- ^ Кучлинг А.М. «HOWTO по функциональному программированию» . Документация Python v2.7.2 . Фонд программного обеспечения Python. Архивировано из оригинала 24 октября 2012 года . Проверено 9 февраля 2012 года .
Понимание списков и выражения-генераторы [...] представляют собой краткое обозначение таких операций, заимствованное из функционального языка программирования Haskell.
- ^ Шеменауэр, Нил; Питерс, Тим; Хетланд, Магнус Ли (18 мая 2001 г.). «PEP 255 – Простые генераторы» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 5 июня 2020 года . Проверено 9 февраля 2012 года .
- ^ «Дополнительные инструменты потока управления» . Документация Python 3 . Фонд программного обеспечения Python. Архивировано из оригинала 4 июня 2016 года . Проверено 24 июля 2015 г.
По многочисленным просьбам в Python были добавлены несколько функций, обычно встречающихся в языках функционального программирования, таких как Lisp. С помощью ключевого слова лямбда можно создавать небольшие анонимные функции.
- ^ «re – Операции с регулярными выражениями – Документация Python 3.10.6» . docs.python.org . Архивировано из оригинала 18 июля 2018 года . Проверено 6 сентября 2022 г.
Этот модуль предоставляет операции сопоставления регулярных выражений, аналогичные тем, которые есть в Perl.
- ^ «КофеСкрипт» . Coffeescript.org . Архивировано из оригинала 12 июня 2020 года . Проверено 3 июля 2018 г.
- ^ «Учебник по языку программирования Genie» . Архивировано из оригинала 1 июня 2020 года . Проверено 28 февраля 2020 г. .
- ^ «Влияние Perl и Python на JavaScript» . www.2ality.com . 24 февраля 2013 г. Архивировано из оригинала 26 декабря 2018 г. Проверено 15 мая 2015 г.
- ^ Раушмайер, Аксель. «Глава 3: Природа JavaScript; влияние» . О’Рейли, «Говорим на JavaScript» . Архивировано из оригинала 26 декабря 2018 года . Проверено 15 мая 2015 г.
- ^ Перейти обратно: а б «Почему мы создали Джулию» . Сайт Юлии . Февраль 2012 г. Архивировано из оригинала 2 мая 2020 г. . Проверено 5 июня 2014 г.
Нам нужно что-то столь же пригодное для общего программирования, как Python [...]
- ^ Перейти обратно: а б Криль, Пол (4 мая 2023 г.). «Язык Mojo объединяет Python и MLIR для разработки искусственного интеллекта» . Инфомир . Архивировано из оригинала 5 мая 2023 года . Проверено 5 мая 2023 г.
- ^ Команда Ринг (4 декабря 2017 г.). «Кольцо и другие языки» . Ring-lang.net . язык звонка . Архивировано из оригинала 25 декабря 2018 года . Проверено 4 декабря 2017 г.
- ^ Бини, Ола (2007). Практические проекты JRuby on Rails Web 2.0: перенос Ruby on Rails на платформу Java . Беркли: APress. п. 3 . ISBN 978-1-59059-881-8 .
- ^ Латтнер, Крис (3 июня 2014 г.). «Домашняя страница Криса Лэттнера» . Крис Лэттнер. Архивировано из оригинала 25 декабря 2018 года . Проверено 3 июня 2014 г.
Язык Swift — это продукт неустанных усилий команды языковых экспертов, гуру документации, ниндзя по оптимизации компиляторов и невероятно важной внутренней экспериментальной группы, которая предоставляла отзывы, помогающие совершенствовать и проверять идеи. Конечно, он также получил большую пользу от опыта, с трудом полученного многими другими языками в этой области, черпая идеи из Objective-C, Rust, Haskell, Ruby, Python, C#, CLU и многих других, чтобы их перечислять.
- ^ Кульман, Дэйв. «Книга Python: Начало Python, продвинутый уровень Python и упражнения по Python» . Раздел 1.1. Архивировано из оригинала (PDF) 23 июня 2012 года.
- ^ «О Питоне» . Фонд программного обеспечения Python. Архивировано из оригинала 20 апреля 2012 года . Проверено 24 апреля 2012 г. , второй раздел «Поклонники Python используют фразу «батарейки в комплекте» для описания стандартной библиотеки, которая охватывает все: от асинхронной обработки до zip-файлов».
- ^ «PEP 206 — Расширенная библиотека Python» . Python.org . Архивировано из оригинала 5 мая 2021 года . Проверено 11 октября 2021 г.
- ^ Россум, Гвидо Ван (20 января 2009 г.). «История Python: краткая хронология Python» . История Питона . Архивировано из оригинала 5 июня 2020 года . Проверено 5 марта 2021 г.
- ^ Петерсон, Бенджамин (20 апреля 2020 г.). «Python 2.7.18, последняя версия Python 2» . Инсайдер Python . Архивировано из оригинала 26 апреля 2020 года . Проверено 27 апреля 2020 г.
- ^ «Опрос разработчиков Stack Overflow, 2022 год» . Переполнение стека . Архивировано из оригинала 27 июня 2022 года . Проверено 12 августа 2022 г.
- ^ «Состояние экосистемы разработчиков в 2020 году, инфографика» . JetBrains: инструменты разработчика для профессионалов и команд . Архивировано из оригинала 1 марта 2021 года . Проверено 5 марта 2021 г.
- ^ Перейти обратно: а б «Индекс ТИОБЕ» . ТИОБЕ. Архивировано из оригинала 25 февраля 2018 года . Проверено 3 января 2023 г.
Индекс сообщества программистов TIOBE — индикатор популярности языков программирования
. Обновляется по мере необходимости. - ^ «Индекс популярности языков программирования PYPL» . pypl.github.io . Архивировано из оригинала 14 марта 2017 года . Проверено 26 марта 2021 г.
- ^ Перейти обратно: а б Веннерс, Билл (13 января 2003 г.). «Создание Python» . Разработчик Артима . Артима. Архивировано из оригинала 1 сентября 2016 года . Проверено 22 марта 2007 г.
- ^ ван Россум, Гвидо (29 августа 2000 г.). «SETL (был: вяло относился к литералам диапазона)» . Python-Dev (список рассылки). Архивировано из оригинала 14 июля 2018 года . Проверено 13 марта 2011 г.
- ^ ван Россум, Гвидо (20 января 2009 г.). «Краткая хронология Python» . История Питона . Архивировано из оригинала 5 июня 2020 года . Проверено 20 января 2009 г.
- ^ Фэйрчайлд, Карли (12 июля 2018 г.). «Гвидо ван Россум уходит с роли пожизненного великодушного диктатора Питона» . Linux-журнал . Архивировано из оригинала 13 июля 2018 года . Проверено 13 июля 2018 г.
- ^ «ПЭП 8100» . Фонд программного обеспечения Python. Архивировано из оригинала 4 июня 2020 года . Проверено 4 мая 2019 г.
- ^ «PEP 13 — Управление языком Python» . Python.org . Архивировано из оригинала 27 мая 2021 года . Проверено 25 августа 2021 г.
- ^ Кучлинг, AM; Задка, Моше (16 октября 2000 г.). «Что нового в Python 2.0» . Фонд программного обеспечения Python. Архивировано из оригинала 23 октября 2012 года . Проверено 11 февраля 2012 г.
- ^ ван Россум, Гвидо (5 апреля 2006 г.). «PEP 3000 – Python 3000» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 3 марта 2016 года . Проверено 27 июня 2009 г.
- ^ «2to3 — Автоматический перевод кода Python 2 в 3» . docs.python.org . Архивировано из оригинала 4 июня 2020 года . Проверено 2 февраля 2021 г.
- ^ «PEP 373 — График выпуска Python 2.7» . python.org . Архивировано из оригинала 19 мая 2020 года . Проверено 9 января 2017 г.
- ^ «PEP 466 — Улучшения сетевой безопасности для Python 2.7.x» . python.org . Архивировано из оригинала 4 июня 2020 года . Проверено 9 января 2017 г.
- ^ «Закат Python 2» . Python.org . Архивировано из оригинала 12 января 2020 года . Проверено 22 сентября 2019 г.
- ^ «PEP 373 — График выпуска Python 2.7» . Python.org . Архивировано из оригинала 13 января 2020 года . Проверено 22 сентября 2019 г.
- ^ «Выпуск Python 3.7.17» . Python.org . Архивировано из оригинала 31 июля 2023 года . Проверено 18 августа 2023 г.
- ^ маттип (25 декабря 2023 г.). «Выпуск PyPy v7.3.14» . ПиПи . Архивировано из оригинала 5 января 2024 года . Проверено 5 января 2024 г.
- ^ «CVE-2021-3177» . Портал для клиентов Red Hat . Архивировано из оригинала 6 марта 2021 года . Проверено 26 февраля 2021 г.
- ^ «CVE-2021-3177» . КВЕ . Архивировано из оригинала 27 февраля 2021 года . Проверено 26 февраля 2021 г.
- ^ «CVE-2021-23336» . КВЕ . Архивировано из оригинала 24 февраля 2021 года . Проверено 26 февраля 2021 г.
- ^ Ланга, Лукаш (24 марта 2022 г.). «Python 3.10.4 и 3.9.12 теперь доступны вне графика» . Инсайдер Python . Архивировано из оригинала 21 апреля 2022 года . Проверено 19 апреля 2022 г.
- ^ Ланга, Лукаш (16 марта 2022 г.). «Python 3.10.3, 3.9.11, 3.8.13 и 3.7.13 теперь доступны с контентом безопасности» . Инсайдер Python . Архивировано из оригинала 17 апреля 2022 года . Проверено 19 апреля 2022 г.
- ^ Ланга, Лукаш (17 мая 2022 г.). «Python 3.9.13 теперь доступен» . Инсайдер Python . Архивировано из оригинала 17 мая 2022 года . Проверено 21 мая 2022 г.
- ^ Ланга, Лукаш (7 сентября 2022 г.). «Выпуски Python 3.10.7, 3.9.14, 3.8.14 и 3.7.14 теперь доступны» . Инсайдер Python . Архивировано из оригинала 13 сентября 2022 года . Проверено 16 сентября 2022 г.
- ^ «CVE-2020-10735» . КВЕ . Архивировано из оригинала 20 сентября 2022 года . Проверено 16 сентября 2022 г.
- ^ «Встроенные типы» .
- ^ корбет (24 октября 2022 г.). «Выпущен Python 3.11 [LWN.net]» . lwn.net . Проверено 15 ноября 2022 г.
- ^ «Питон» . конецжизни.дата . 23 июля 2024 года. Архивировано из оригинала 18 сентября 2021 года . Проверено 15 августа 2023 г.
- ^ «Что нового в Python 3.13» . Документация Python . Проверено 30 апреля 2024 г.
- ^ Воутерс, Томас (9 апреля 2024 г.). «Python Insider: выпущены Python 3.12.3 и 3.13.0a6» . Инсайдер Python . Проверено 29 апреля 2024 г.
- ^ https://peps.python.org/pep-0594/
- ^ Компания Cain Gang Ltd. «Метаклассы Python: кто? Почему? Когда?» (PDF) . Архивировано из оригинала (PDF) 30 мая 2009 года . Проверено 27 июня 2009 г.
- ^ «3.3. Специальные имена методов» . Справочник по языку Python . Фонд программного обеспечения Python. Архивировано из оригинала 15 декабря 2018 года . Проверено 27 июня 2009 г.
- ^ «PyDBC: предусловия метода, постусловия метода и инварианты классов для Python» . Архивировано из оригинала 23 ноября 2019 года . Проверено 24 сентября 2011 г.
- ^ «Контракты для Python» . Архивировано из оригинала 15 июня 2020 года . Проверено 24 сентября 2011 г.
- ^ «Пидаталог» . Архивировано из оригинала 13 июня 2020 года . Проверено 22 июля 2012 г.
- ^ «Расширение и встраивание интерпретатора Python: подсчет ссылок» . Документы.python.org. Архивировано из оригинала 18 октября 2012 года . Проверено 5 июня 2020 г.
Поскольку Python интенсивно использует
malloc()
иfree()
, ему нужна стратегия, позволяющая избежать утечек памяти, а также использовать освобожденную память. Выбранный метод называется подсчетом ссылок . - ^ Перейти обратно: а б Хеттингер, Раймонд (30 января 2002 г.). «PEP 289 — Генерирующие выражения» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 14 июня 2020 года . Проверено 19 февраля 2012 г.
- ^ «6.5 itertools — Функции, создающие итераторы для эффективного цикла» . Документы.python.org. Архивировано из оригинала 14 июня 2020 года . Проверено 22 ноября 2016 г.
- ^ Перейти обратно: а б Питерс, Тим (19 августа 2004 г.). «PEP 20 – Дзен Python» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 26 декабря 2018 года . Проверено 24 ноября 2008 г.
- ^ Лутц, Марк (январь 2022 г.). «Изменения Python 2014+» . Изучение Питона . Архивировано из оригинала 15 марта 2024 года . Проверено 25 февраля 2024 г.
- ^ «Путаница относительно правила в «Дзене Python»» . Справка по Python — обсуждения на Python.org . 3 мая 2022 года. Архивировано из оригинала 25 февраля 2024 года . Проверено 25 февраля 2024 г.
- ^ Амби, Четан (4 июля 2021 г.). «Самый противоречивый оператор Python-моржа» . Python упрощенный . Архивировано из оригинала 27 августа 2023 года . Проверено 5 февраля 2024 г.
- ^ Грифски, Джереми (24 мая 2020 г.). «Споры об операторе Walrus в Python» . Кодер-отступник . Архивировано из оригинала 28 декабря 2023 года . Проверено 25 февраля 2024 г.
- ^ Бадер, Дэн. «Рекомендации по форматированию строк в Python» . Настоящий Питон . Архивировано из оригинала 18 февраля 2024 года . Проверено 25 февраля 2024 г.
- ^ Мартелли, Алекс; Рэйвенскрофт, Анна; Ашер, Дэвид (2005). Поваренная книга Python, 2-е издание . О'Рейли Медиа . п. 230. ИСБН 978-0-596-00797-3 . Архивировано из оригинала 23 февраля 2020 года . Проверено 14 ноября 2015 г.
- ^ «Питонская культура» . ебеб . 21 января 2014 г. Архивировано из оригинала 30 января 2014 г.
- ^ Перейти обратно: а б «Транспиляция Python в Julia с использованием PyJL» (PDF) . Архивировано (PDF) из оригинала 19 ноября 2023 года . Проверено 20 сентября 2023 г.
После ручной модификации одной строки кода путем указания необходимой информации о типе мы получили ускорение в 52,6 раза, в результате чего переведенный код Julia стал в 19,5 раза быстрее, чем исходный код Python.
- ^ «Почему он называется Python?» . Общие часто задаваемые вопросы по Python . Документы.python.org. Архивировано из оригинала 24 октября 2012 года . Проверено 3 января 2023 г.
- ^ «15 причин, по которым Python является мощной силой в Интернете» . Архивировано из оригинала 11 мая 2019 года . Проверено 3 июля 2018 г.
- ^ «pprint — Принтер данных — Документация Python 3.11.0» . docs.python.org . Архивировано из оригинала 22 января 2021 года . Проверено 5 ноября 2022 г.
материал=['спам', 'яйца', 'лесоруб', 'рыцари', 'ни']
- ^ «Стиль кода — Путеводитель по Python для путешествующих автостопом» . docs.python-guide.org . Архивировано из оригинала 27 января 2021 года . Проверено 20 января 2021 г.
- ^ «Является ли Python хорошим языком для начинающих программистов?» . Общие часто задаваемые вопросы по Python . Фонд программного обеспечения Python. Архивировано из оригинала 24 октября 2012 года . Проверено 21 марта 2007 г.
- ^ «Мифы об отступах в Python» . Secnetix.de. Архивировано из оригинала 18 февраля 2018 года . Проверено 19 апреля 2011 г.
- ^ Гуттаг, Джон В. (12 августа 2016 г.). Введение в вычисления и программирование с использованием Python: с применением к пониманию данных . МТИ Пресс. ISBN 978-0-262-52962-4 .
- ^ «PEP 8 – Руководство по стилю для кода Python» . Python.org . Архивировано из оригинала 17 апреля 2019 года . Проверено 26 марта 2019 г.
- ^ «8. Ошибки и исключения — документация Python 3.12.0a0» . docs.python.org . Архивировано из оригинала 9 мая 2022 года . Проверено 9 мая 2022 г.
- ^ «Основные моменты: Python 2.5» . Python.org . Архивировано из оригинала 4 августа 2019 года . Проверено 20 марта 2018 г.
- ^ ван Россум, Гвидо (22 апреля 2009 г.). «Устранение хвостовой рекурсии» . Neopythonic.blogspot.be. Архивировано из оригинала 19 мая 2018 года . Проверено 3 декабря 2012 г.
- ^ ван Россум, Гвидо (9 февраля 2006 г.). «Языковой дизайн – это не просто решение головоломок» . Форумы Артимы . Артима. Архивировано из оригинала 17 января 2020 года . Проверено 21 марта 2007 г.
- ^ ван Россум, Гвидо; Эби, Филип Дж. (10 мая 2005 г.). «PEP 342 – Сопрограммы через расширенные генераторы» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 29 мая 2020 года . Проверено 19 февраля 2012 г.
- ^ «ПЭП 380» . Python.org. Архивировано из оригинала 4 июня 2020 года . Проверено 3 декабря 2012 г.
- ^ "разделение" . python.org . Архивировано из оригинала 20 июля 2006 года . Проверено 30 июля 2014 г.
- ^ «PEP 0465 — специальный инфиксный оператор для умножения матриц» . python.org . Архивировано из оригинала 4 июня 2020 года . Проверено 1 января 2016 г.
- ^ «Выпуск Python 3.5.1 и журнал изменений» . python.org . Архивировано из оригинала 14 мая 2020 года . Проверено 1 января 2016 г.
- ^ «Что нового в Python 3.8» . Архивировано из оригинала 8 июня 2020 года . Проверено 14 октября 2019 г.
- ^ ван Россум, Гвидо; Хеттингер, Раймонд (7 февраля 2003 г.). «PEP 308 – Условные выражения» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 13 марта 2016 года . Проверено 13 июля 2011 г.
- ^ «4. Встроенные типы — документация Python 3.6.3rc1» . python.org . Архивировано из оригинала 14 июня 2020 года . Проверено 1 октября 2017 г.
- ^ «5.3. Кортежи и последовательности — документация Python 3.7.1rc2» . python.org . Архивировано из оригинала 10 июня 2020 года . Проверено 17 октября 2018 г.
- ^ Перейти обратно: а б «PEP 498 — Интерполяция буквальных строк» . python.org . Архивировано из оригинала 15 июня 2020 года . Проверено 8 марта 2017 г.
- ^ «Почему слово «self» должно использоваться явно в определениях и вызовах методов?» . Часто задаваемые вопросы по дизайну и истории . Фонд программного обеспечения Python. Архивировано из оригинала 24 октября 2012 года . Проверено 19 февраля 2012 г.
- ^ Свейгарт, Эл (2020). Помимо базовых знаний о Python: лучшие практики написания чистого кода . Нет крахмального пресса. п. 322. ИСБН 978-1-59327-966-0 . Архивировано из оригинала 13 августа 2021 года . Проверено 7 июля 2021 г.
- ^ «Справочник по языку Python, раздел 3.3. Классы нового и классического стиля для версии 2.7.1» . Архивировано из оригинала 26 октября 2012 года . Проверено 12 января 2011 г.
- ^ «PEP 484 — Подсказки типов | peps.python.org» . peps.python.org . Архивировано из оригинала 27 ноября 2023 года . Проверено 29 ноября 2023 г.
- ^ «печать — Поддержка подсказок по типу» . Документация Python . Фонд программного обеспечения Python. Архивировано из оригинала 21 февраля 2020 года . Проверено 22 декабря 2023 г.
- ^ «mypy — дополнительная статическая типизация для Python» . Архивировано из оригинала 6 июня 2020 года . Проверено 28 января 2017 г.
- ^ "Введение" . mypyc.readthedocs.io . Архивировано из оригинала 22 декабря 2023 года . Проверено 22 декабря 2023 г.
- ^ «15. Арифметика с плавающей запятой: проблемы и ограничения — документация Python 3.8.3» . docs.python.org . Архивировано из оригинала 6 июня 2020 года . Проверено 6 июня 2020 г.
Почти все машины сегодня (ноябрь 2000 г.) используют арифметику с плавающей запятой IEEE-754, и почти все платформы отображают числа с плавающей запятой Python в IEEE-754 «двойной точности».
- ^ Задка, Моше; ван Россум, Гвидо (11 марта 2001 г.). «PEP 237 – Объединение длинных и целых чисел» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 28 мая 2020 года . Проверено 24 сентября 2011 г.
- ^ «Встроенные типы» . Архивировано из оригинала 14 июня 2020 года . Проверено 3 октября 2019 г.
- ^ «PEP 465 — специальный инфиксный оператор для умножения матриц» . python.org . Архивировано из оригинала 29 мая 2020 года . Проверено 3 июля 2018 г.
- ^ Перейти обратно: а б Задка, Моше; ван Россум, Гвидо (11 марта 2001 г.). «PEP 238 – Смена оператора подразделения» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 28 мая 2020 года . Проверено 23 октября 2013 г.
- ^ «Почему Python использует этажи с целочисленным делением» . 24 августа 2010 г. Архивировано из оригинала 5 июня 2020 г. . Проверено 25 августа 2010 г.
- ^ «round» , Стандартная библиотека Python, выпуск 3.2, §2: Встроенные функции , заархивировано из оригинала 25 октября 2012 г. , получено 14 августа 2011 г.
- ^ «round» , Стандартная библиотека Python, выпуск 2.7, §2: Встроенные функции , заархивировано из оригинала 27 октября 2012 г. , получено 14 августа 2011 г.
- ^ Бизли, Дэвид М. (2009). Основной справочник Python (4-е изд.). Аддисон-Уэсли Профессионал. п. 66 . ISBN 9780672329784 .
- ^ Керниган, Брайан В.; Ричи, Деннис М. (1988). Язык программирования C (2-е изд.). п. 206 .
- ^ Перейти обратно: а б Батиста, Факундо (17 октября 2003 г.). «PEP 327 — Десятичный тип данных» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 4 июня 2020 года . Проверено 24 ноября 2008 г.
- ^ «Что нового в Python 2.6» . Документация Python v2.6.9 . 29 октября 2013 г. Архивировано из оригинала 23 декабря 2019 г. . Проверено 26 сентября 2015 г.
- ^ «10 причин, по которым Python полезен для исследований (и несколько причин, по которым этого не происходит) - Хойт Кепке» . Статистический факультет Вашингтонского университета . Архивировано из оригинала 31 мая 2020 года . Проверено 3 февраля 2019 г.
- ^ Шелл, Скотт (17 июня 2014 г.). «Введение в Python для научных вычислений» (PDF) . Архивировано (PDF) из оригинала 4 февраля 2019 года . Проверено 3 февраля 2019 г.
- ^ Пиотровский, Пшемыслав (июль 2006 г.). «Создание быстрой среды веб-разработки для серверных страниц Python и Oracle» . Технологическая сеть Oracle . Оракул. Архивировано из оригинала 2 апреля 2019 года . Проверено 12 марта 2012 г.
- ^ Эби, Филип Дж. (7 декабря 2003 г.). «PEP 333 — Интерфейс шлюза веб-сервера Python v1.0» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 14 июня 2020 года . Проверено 19 февраля 2012 г.
- ^ «ПиПИ» . ПиПИ . 17 марта 2024 г. Архивировано из оригинала 17 марта 2024 г.
- ^ Подумай, Кэнопи. «Навес» . www.en Thought.com . Архивировано из оригинала 15 июля 2017 года . Проверено 20 августа 2016 г.
- ^ «PEP 7 — Руководство по стилю для кода C | peps.python.org» . peps.python.org . Архивировано из оригинала 24 апреля 2022 года . Проверено 28 апреля 2022 г.
- ^ «4. Создание расширений C и C++ — документация Python 3.9.2» . docs.python.org . Архивировано из оригинала 3 марта 2021 года . Проверено 1 марта 2021 г.
- ^ ван Россум, Гвидо (5 июня 2001 г.). «PEP 7 – Руководство по стилю для кода C» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 1 июня 2020 года . Проверено 24 ноября 2008 г.
- ^ «Байт-код CPython» . Документы.python.org. Архивировано из оригинала 5 июня 2020 года . Проверено 16 февраля 2016 г.
- ^ «Внутреннее устройство Python 2.5» (PDF) . Архивировано (PDF) из оригинала 6 августа 2012 года . Проверено 19 апреля 2011 г.
- ^ «Журнал изменений — документация Python 3.9.0» . docs.python.org . Архивировано из оригинала 7 февраля 2021 года . Проверено 8 февраля 2021 г.
- ^ «Скачать Python» . Python.org . Архивировано из оригинала 8 декабря 2020 года . Проверено 13 декабря 2020 г.
- ^ "история [vmspython]" . www.vmspython.org . Архивировано из оригинала 2 декабря 2020 года . Проверено 4 декабря 2020 г.
- ^ «Интервью с Гвидо ван Россумом» . Орейли.com. Архивировано из оригинала 16 июля 2014 года . Проверено 24 ноября 2008 г.
- ^ «Загрузить Python для других платформ» . Python.org . Архивировано из оригинала 27 ноября 2020 года . Проверено 4 декабря 2020 г.
- ^ «Совместимость с PyPy» . Pypy.org. Архивировано из оригинала 6 июня 2020 года . Проверено 3 декабря 2012 г.
- ^ Команда The PyPy (28 декабря 2019 г.). «Скачать и установить» . ПиПи . Архивировано из оригинала 8 января 2022 года . Проверено 8 января 2022 г.
- ^ «Сравнение скорости между CPython и Pypy» . Speed.pypy.org. Архивировано из оригинала 10 мая 2021 года . Проверено 3 декабря 2012 г.
- ^ «Функции Stackless на уровне приложения — документация PyPy 2.0.2» . Doc.pypy.org. Архивировано из оригинала 4 июня 2020 года . Проверено 17 июля 2013 г.
- ^ «Python для EV3» . Лего Образование . Архивировано из оригинала 7 июня 2020 года . Проверено 17 апреля 2019 г.
- ^ Егулалп, Сердар (29 октября 2020 г.). «Пистон возвращается из мертвых, чтобы ускорить Python» . Инфомир . Архивировано из оригинала 27 января 2021 года . Проверено 26 января 2021 г.
- ^ "cinder: ориентированная на производительность версия CPython для Instagram" . Гитхаб . Архивировано из оригинала 4 мая 2021 года . Проверено 4 мая 2021 г.
- ^ Арока, Рафаэль (7 августа 2021 г.). «Снек Ланг: похоже на Python на Arduino» . Еще один технологический блог . Архивировано из оригинала 5 января 2024 года . Проверено 4 января 2024 г.
- ^ Офранк (CNXSoft), Жан-Люк (16 января 2020 г.). «Snekboard управляет силовыми функциями LEGO с помощью языков программирования CircuitPython или Snek (краудфандинг) – программное обеспечение CNX» . CNX Software — Новости встраиваемых систем . Архивировано из оригинала 5 января 2024 года . Проверено 4 января 2024 г.
- ^ Кеннеди (@mkennedy), Майкл. «Готовы узнать, стали ли вы знаменитыми?» . pythonbytes.fm . Архивировано из оригинала 5 января 2024 года . Проверено 4 января 2024 г.
- ^ Паккард, Кейт (20 декабря 2022 г.). «Язык программирования Snek: встроенный язык вычислений на основе Python» (PDF) . Архивировано (PDF) из оригинала 4 января 2024 года . Проверено 4 января 2024 г.
- ^ «Планы по оптимизации Python» . Хостинг проектов Google . 15 декабря 2009 года. Архивировано из оригинала 11 апреля 2016 года . Проверено 24 сентября 2011 г.
- ^ «Python на Nokia N900» . Стохастическая геометрия . 29 апреля 2010 г. Архивировано из оригинала 20 июня 2019 г. Проверено 9 июля 2015 г.
- ^ «Бритон» . brython.info . Архивировано из оригинала 3 августа 2018 года . Проверено 21 января 2021 г.
- ^ «Трансшифрование — Python в браузере» . transcrypt.org . Архивировано из оригинала 19 августа 2018 года . Проверено 22 декабря 2020 г.
- ^ «Трансшифрование: анатомия компилятора Python в JavaScript» . ИнфоQ . Архивировано из оригинала 5 декабря 2020 года . Проверено 20 января 2021 г.
- ^ «Кодон: различия с Python» . Архивировано из оригинала 25 мая 2023 года . Проверено 28 августа 2023 г.
- ^ Лоусон, Лорейн (14 марта 2023 г.). «Компилятор, созданный MIT, ускоряет код Python» . Новый стек . Архивировано из оригинала 6 апреля 2023 года . Проверено 28 августа 2023 г.
- ^ «Дом Нуитка | Дом Нуитка» . nuitka.net . Архивировано из оригинала 30 мая 2020 года . Проверено 18 августа 2017 г.
- ^ Гельтон, Серж; Брюне, Пьеррик; Амини, Мехди; Мерлини, Адриан; Корбийон, Ксавье; Рейно, Алан (16 марта 2015 г.). «Pythran: обеспечение статической оптимизации научных программ Python» . Вычислительная наука и открытия . 8 (1). Издательство IOP: 014001. Бибкод : 2015CS&D....8a4001G . дои : 10.1088/1749-4680/8/1/014001 . ISSN 1749-4699 .
- ^ «Транспилятор Python → 11l → C++» . Архивировано из оригинала 24 сентября 2022 года . Проверено 17 июля 2022 г.
- ^ «гугл/сердитый» . 10 апреля 2020 года. Архивировано из оригинала 15 апреля 2020 года . Получено 25 марта 2020 г. - через GitHub.
- ^ «Проекты» . opensource.google . Архивировано из оригинала 24 апреля 2020 года . Проверено 25 марта 2020 г.
- ^ Франциско, Томас Клэберн в Сан. «Код Google Grumpy заставляет Python работать» . www.theregister.com . Архивировано из оригинала 7 марта 2021 года . Проверено 20 января 2021 г.
- ^ «GitHub — IronLanguages/ironpython3: реализация Python 3.x для .NET Framework, построенная на основе среды выполнения динамического языка» . Гитхаб . Архивировано из оригинала 28 сентября 2021 года.
- ^ «IronPython.net/» . IronPython.net . Архивировано из оригинала 17 апреля 2021 года.
- ^ «Часто задаваемые вопросы по Jython» . www.jython.org . Архивировано из оригинала 22 апреля 2021 года . Проверено 22 апреля 2021 г.
- ^ Мурри, Риккардо (2013). Производительность среды выполнения Python для нечислового научного кода . Европейская конференция «Python в науке» (EuroSciPy). arXiv : 1404.6388 . Бибкод : 2014arXiv1404.6388M .
- ^ «Игра в тесты компьютерного языка» . Архивировано из оригинала 14 июня 2020 года . Проверено 30 апреля 2020 г.
- ^ Перейти обратно: а б Варшава, Барри; Хилтон, Джереми; Гуджер, Дэвид (13 июня 2000 г.). «PEP 1 – Цель и руководящие принципы PEP» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 6 июня 2020 года . Проверено 19 апреля 2011 г.
- ^ «PEP 8 – Руководство по стилю для кода Python» . Python.org . Архивировано из оригинала 17 апреля 2019 года . Проверено 26 марта 2019 г.
- ^ Кэннон, Бретт. «Гвидо, некоторые ребята и список рассылки: как разрабатывается Python» . python.org . Фонд программного обеспечения Python. Архивировано из оригинала 1 июня 2009 года . Проверено 27 июня 2009 г.
- ^ «Перемещение ошибок Python на GitHub [LWN.net]» . Архивировано из оригинала 2 октября 2022 года . Проверено 2 октября 2022 г.
- ^ «Руководство разработчика Python – Руководство разработчика Python» . devguide.python.org . Архивировано из оригинала 9 ноября 2020 года . Проверено 17 декабря 2019 г.
- ^ Хьюз, Оуэн (24 мая 2021 г.). «Языки программирования: почему Python 4.0 может никогда не появиться, по мнению его создателя» . Техреспублика . Архивировано из оригинала 14 июля 2022 года . Проверено 16 мая 2022 г.
- ^ «PEP 602 — Годовой цикл выпуска Python» . Python.org . Архивировано из оригинала 14 июня 2020 года . Проверено 6 ноября 2019 г.
- ^ «Изменение частоты выпусков Python [LWN.net]» . lwn.net . Архивировано из оригинала 6 ноября 2019 года . Проверено 6 ноября 2019 г.
- ^ Норвиц, Нил (8 апреля 2002 г.). «Графики выпусков [Python-Dev] (было Стабильность и изменения)» . Архивировано из оригинала 15 декабря 2018 года . Проверено 27 июня 2009 г.
- ^ Перейти обратно: а б Ааз; Бакстер, Энтони (15 марта 2001 г.). «PEP 6 – Релизы с исправлениями ошибок» . Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 5 июня 2020 года . Проверено 27 июня 2009 г.
- ^ «Python Buildbot» . Руководство разработчика Python . Фонд программного обеспечения Python. Архивировано из оригинала 5 июня 2020 года . Проверено 24 сентября 2011 г.
- ^ «1. Расширение Python с помощью C или C++ — документация Python 3.9.1» . docs.python.org . Архивировано из оригинала 23 июня 2020 года . Проверено 14 февраля 2021 г.
- ^ «PEP 623 — удалить wstr из Юникода» . Python.org . Архивировано из оригинала 5 марта 2021 года . Проверено 14 февраля 2021 г.
- ^ «PEP 634 – Соответствие структурному шаблону: Спецификация» . Python.org . Архивировано из оригинала 6 мая 2021 года . Проверено 14 февраля 2021 г.
- ^ «Инструменты документирования» . Python.org . Архивировано из оригинала 11 ноября 2020 года . Проверено 22 марта 2021 г.
- ^ Перейти обратно: а б «Разжигаем аппетит» . Учебник по Python . Фонд программного обеспечения Python. Архивировано из оригинала 26 октября 2012 года . Проверено 20 февраля 2012 г.
- ^ «Должен ли я в Python использовать else после возврата в блоке if?» . Переполнение стека . Обмен стеками. 17 февраля 2011 г. Архивировано из оригинала 20 июня 2019 г. . Проверено 6 мая 2011 г.
- ^ Лутц, Марк (2009). Изучение Python: мощное объектно-ориентированное программирование . О'Рейли Медиа, Инк. с. 17. ISBN 9781449379322 . Архивировано из оригинала 17 июля 2017 года . Проверено 9 мая 2017 г.
- ^ Фехили, Крис (2002). Питон . Персиковая яма Пресс. п. хв. ISBN 9780201748840 . Архивировано из оригинала 17 июля 2017 года . Проверено 9 мая 2017 г.
- ^ Лубанович, Билл (2014). Знакомство с Питоном . Севастополь, Калифорния: O'Reilly Media. п. 305. ИСБН 978-1-4493-5936-2 . Проверено 31 июля 2023 г.
- ^ Блейк, Трой (18 января 2021 г.). «Индекс ТИОБЕ за январь 2021 года» . Новости технологий и информация от SeniorDBA . Архивировано из оригинала 21 марта 2021 года . Проверено 26 февраля 2021 г.
- ^ «Цитаты о Python» . Фонд программного обеспечения Python. Архивировано из оригинала 3 июня 2020 года . Проверено 8 января 2012 г.
- ^ «Организации, использующие Python» . Фонд программного обеспечения Python. Архивировано из оригинала 21 августа 2018 года . Проверено 15 января 2009 г.
- ^ «Python: Святой Грааль программирования» . Бюллетень ЦЕРН (31/2006). Публикации ЦЕРН. 31 июля 2006 г. Архивировано из оригинала 15 января 2013 г. Проверено 11 февраля 2012 г.
- ^ Шафер, Дэниел Г. (17 января 2003 г.). «Python упрощает проектирование миссий космических кораблей» . Фонд программного обеспечения Python. Архивировано из оригинала 5 июня 2020 года . Проверено 24 ноября 2008 г.
- ^ «Торнадо: веб-фреймворк реального времени Facebook для Python – Facebook для разработчиков» . Facebook для разработчиков . Архивировано из оригинала 19 февраля 2019 года . Проверено 19 июня 2018 г.
- ^ «На чем основан Instagram: сотни примеров, десятки технологий» . Инстаграм Инжиниринг. 11 декабря 2016 г. Архивировано из оригинала 15 июня 2020 г. Проверено 27 мая 2019 г.
- ^ «Как мы используем Python в Spotify» . Лаборатория Spotify . 20 марта 2013 г. Архивировано из оригинала 10 июня 2020 г. . Проверено 25 июля 2018 г.
- ^ Фортенберри, Тим (17 января 2003 г.). «Промышленный свет и магия работают на Python» . Фонд программного обеспечения Python. Архивировано из оригинала 6 июня 2020 года . Проверено 11 февраля 2012 г.
- ^ Тафт, Дэррил К. (5 марта 2007 г.). «Python проникает в системы» . eWeek.com . Зифф Дэвис Холдингс. Архивировано из оригинала 13 августа 2021 года . Проверено 24 сентября 2011 г.
- ^ GitHub — reddit-archive/reddit: исторический код с reddit.com. , Архивы Reddit, заархивировано из оригинала 1 июня 2020 г. , получено 20 марта 2019 г.
- ^ «Статистика использования и доля рынка Python для веб-сайтов» . 2012. Архивировано из оригинала 13 августа 2021 года . Проверено 18 декабря 2012 г.
- ^ Олифант, Трэвис (2007). «Python для научных вычислений» . Вычисления в науке и технике . 9 (3): 10–20. Бибкод : 2007CSE.....9c..10O . CiteSeerX 10.1.1.474.6460 . дои : 10.1109/MCSE.2007.58 . ISSN 1521-9615 . S2CID 206457124 . Архивировано из оригинала 15 июня 2020 года . Проверено 10 апреля 2015 г.
- ^ Миллман, К. Джаррод; Айвазис, Михаил (2011). «Python для ученых и инженеров» . Вычисления в науке и технике . 13 (2): 9–12. Бибкод : 2011CSE....13b...9M . дои : 10.1109/MCSE.2011.36 . Архивировано из оригинала 19 февраля 2019 года . Проверено 7 июля 2014 г.
- ^ Естественное образование с помощью SageMath , Инновационные вычисления в естественнонаучном образовании, заархивировано из оригинала 15 июня 2020 г. , получено 22 апреля 2019 г.
- ^ «OpenCV: Учебные пособия по OpenCV-Python» . docs.opencv.org . Архивировано из оригинала 23 сентября 2020 года . Проверено 14 сентября 2020 г.
- ^ Дин, Джефф ; Монга, Раджат; и др. (9 ноября 2015 г.). «TensorFlow: крупномасштабное машинное обучение в гетерогенных системах» (PDF) . TensorFlow.org . Google Исследования. Архивировано (PDF) из оригинала 20 ноября 2015 г. Проверено 10 ноября 2015 г.
- ^ Пятецкий, Григорий. «Python съедает R: Лучшее программное обеспечение для аналитики, обработки данных и машинного обучения в 2018 году: тенденции и анализ» . КДнаггетс . Архивировано из оригинала 15 ноября 2019 года . Проверено 30 мая 2018 г.
- ^ «Кто использует scikit-learn? – документация scikit-learn 0.20.1» . scikit-learn.org . Архивировано из оригинала 6 мая 2020 года . Проверено 30 ноября 2018 г.
- ^ Жуппи, Норм . «Google усложняет задачи машинного обучения с помощью специального чипа TPU» . Блог об облачной платформе Google . Архивировано из оригинала 18 мая 2016 года . Проверено 19 мая 2016 г.
- ^ Де Рэдт, Люк; Киммиг, Анжелика (2015). «Концепции вероятностного (логического) программирования» . Машинное обучение . 100 (1): 5–47. дои : 10.1007/s10994-015-5494-z . S2CID 3166992 .
- ^ «Набор средств естественного языка – документация NLTK 3.5b1» . www.nltk.org . Архивировано из оригинала 13 июня 2020 года . Проверено 10 апреля 2020 г.
- ^ Андерсен К. и Свифт Т., 2023. Система Янус: мост к новым приложениям пролога. В Прологе: Следующие 50 лет (стр. 93–104). Чам: Springer Nature, Швейцария.
- ^ «Интерфейс SWI-Prolog Python» . Архивировано из оригинала 15 марта 2024 года . Проверено 15 марта 2024 г.
- ^ Тарау, П., 2023. Размышления об автоматизации, обучаемости и выразительности в языках программирования, основанных на логике. В Прологе: Следующие 50 лет (стр. 359–371). Чам: Springer Nature, Швейцария.
- ^ «Tkinter — интерфейс Python для TCL/Tk» . Архивировано из оригинала 18 октября 2012 года . Проверено 9 июня 2023 г.
- ^ «Урок по Python Tkinter» . 3 июня 2020 года. Архивировано из оригинала 9 июня 2023 года . Проверено 9 июня 2023 г.
- ^ «Установщики GIMP для Windows – часто задаваемые вопросы» . 26 июля 2013 года. Архивировано из оригинала 17 июля 2013 года . Проверено 26 июля 2013 г.
- ^ «Компоненты Jasc PSP9» . Архивировано из оригинала 19 марта 2008 года.
- ^ «О начале работы с написанием скриптов геообработки» . Справка ArcGIS Desktop 9.2 . Институт исследования экологических систем. 17 ноября 2006 г. Архивировано из оригинала 5 июня 2020 г. . Проверено 11 февраля 2012 г.
- ^ Свиная грудинка CCP (24 августа 2010 г.). «Бесстековый Python 2.7» . Блоги разработчиков сообщества EVE . Игры КПК . Архивировано из оригинала 11 января 2014 года . Проверено 11 января 2014 г.
Как вы, возможно, знаете, в основе EVE лежит язык программирования, известный как Stackless Python.
- ^ Кодилл, Барри (20 сентября 2005 г.). «Моддинг Sid Meier's Civilization IV» . Блог разработчиков Sid Meier’s Civilization IV . Игры Фираксис . Архивировано из оригинала 2 декабря 2010 года.
Мы создали три уровня инструментов... Следующий уровень предлагает поддержку Python и XML, позволяя более опытным моддерам манипулировать игровым миром и всем, что в нем.
- ^ «Руководство по языку Python (v1.0)» . API данных списка документов Google v1.0 . Архивировано из оригинала 15 июля 2010 года.
- ^ «Настройка и использование Python» . Фонд программного обеспечения Python. Архивировано из оригинала 17 июня 2020 года . Проверено 10 января 2020 г. .
- ^ «Иммунитет: знать, что ты в безопасности» . Архивировано из оригинала 16 февраля 2009 года.
- ^ «Основная безопасность» . Основная безопасность . Архивировано из оригинала 9 июня 2020 года . Проверено 10 апреля 2020 г.
- ^ «Что такое сахар?» . Сахарные лаборатории. Архивировано из оригинала 9 января 2009 года . Проверено 11 февраля 2012 г.
- ^ «Новые функции и исправления версии 4.0» . LibreOffice.org . Фонд документов . 2013. Архивировано из оригинала 9 февраля 2014 года . Проверено 25 февраля 2013 г.
- ^ «Подсказки для пользователей Python» . boo.codehaus.org . Фонд Кодхаус. Архивировано из оригинала 11 декабря 2008 года . Проверено 24 ноября 2008 г.
- ^ Эстербрук, Чарльз. «Благодарности» . cobra-language.com . Язык кобры. Архивировано из оригинала 8 февраля 2008 года . Проверено 7 апреля 2010 г.
- ^ «Предложения: итераторы и генераторы [ES4 Wiki]» . wiki.ecmascript.org. Архивировано из оригинала 20 октября 2007 года . Проверено 24 ноября 2008 г.
- ^ «Часто задаваемые вопросы» . Документация Godot Engine . Архивировано из оригинала 28 апреля 2021 года . Проверено 10 мая 2021 г.
- ^ Кинкейд, Джейсон (10 ноября 2009 г.). «Google’s Go: новый язык программирования, совместимый с Python и C++» . ТехКранч . Архивировано из оригинала 18 января 2010 года . Проверено 29 января 2010 г.
- ^ Страчан, Джеймс (29 августа 2003 г.). «Groovy — рождение нового динамического языка для платформы Java» . Архивировано из оригинала 5 апреля 2007 года . Проверено 11 июня 2007 г.
- ^ «Модульная документация – почему Mojo» . docs.modular.com . Архивировано из оригинала 5 мая 2023 года . Проверено 5 мая 2023 г.
Mojo как член семейства Python [..] Использование Python значительно упрощает наши усилия по проектированию, поскольку большая часть синтаксиса уже определена. [..] мы решили, что правильная долгосрочная цель для Mojo — предоставить расширенный набор Python (т.е. быть совместимым с существующими программами) и немедленно внедрить CPython для поддержки экосистемы с длинным хвостом. Мы ожидаем и надеемся, что программист Python будет сразу же знаком с Mojo, а также предоставит новые инструменты для разработки кода системного уровня, которые позволят вам делать то, для чего Python обращается к C и C++.
- ^ Спенсер, Майкл (4 мая 2023 г.). «Что такое язык программирования Mojo?» . datasciencelearningcenter.substack.com . Архивировано из оригинала 5 мая 2023 года . Проверено 5 мая 2023 г.
- ^ Егулалп, Сердар (16 января 2017 г.). «Язык Nim основан на лучшем из Python, Rust, Go и Lisp» . Инфомир . Архивировано из оригинала 13 октября 2018 года . Проверено 7 июня 2020 г.
Синтаксис Nim сильно напоминает синтаксис Python, поскольку он использует блоки кода с отступами и некоторые элементы того же синтаксиса (например, способ построения блоков if/elif/then/else).
- ^ «Интервью с создателем Ruby» . Linuxdevcenter.com. Архивировано из оригинала 28 апреля 2018 года . Проверено 3 декабря 2012 г.
- ^ Латтнер, Крис (3 июня 2014 г.). «Домашняя страница Криса Лэттнера» . Крис Лэттнер. Архивировано из оригинала 22 декабря 2015 года . Проверено 3 июня 2014 г.
Я начал работу над языком программирования Swift в июле 2010 года. Я реализовал большую часть базовой структуры языка, и лишь несколько человек знали о его существовании. Несколько других (удивительных) людей начали серьезно вносить свой вклад в конце 2011 года, и в июле 2013 года это стало основным направлением деятельности группы Apple Developer Tools [...], черпая идеи из Objective-C, Rust, Haskell, Ruby, Python, C#, CLU и многие другие, чтобы перечислять их.
- ^ Джалан, Нишант Анжани (10 ноября 2022 г.). «Программирование на Котлине» . Кодекс . Проверено 29 апреля 2024 г.
- ^ Куприс, Андреас; Товарищи, Донал К. (14 сентября 2000 г.). «СОВЕТ №3: Формат СОВЕТА» . tcl.tk. Разработчик Tcl Xchange. Архивировано из оригинала 13 июля 2017 года . Проверено 24 ноября 2008 г.
- ^ Густафссон, Пер; Нисканен, Раймо (29 января 2007 г.). «EEP 1: Цель и руководящие принципы EEP» . erlang.org. Архивировано из оригинала 15 июня 2020 года . Проверено 19 апреля 2011 г.
- ^ «Процесс быстрой эволюции» . Репозиторий Swift Programming Language Evolution на GitHub . 18 февраля 2020 года. Архивировано из оригинала 27 апреля 2020 года . Проверено 27 апреля 2020 г.
Источники
[ редактировать ]- «Python для искусственного интеллекта» . Питон Вики. 19 июля 2012 года. Архивировано из оригинала 1 ноября 2012 года . Проверено 3 декабря 2012 г.
- Пейн, Джоселин, изд. (август 2005 г.). «ИИ в Python» . Информационный бюллетень AI Expert . Амзи!. Архивировано из оригинала 26 марта 2012 года . Проверено 11 февраля 2012 г.
- «PyAIML 0.8.5: Индекс пакета Python» . Pypi.python.org . Проверено 17 июля 2013 г.
- Рассел, Стюарт Дж. и Норвиг, Питер (2009). Искусственный интеллект: современный подход (3-е изд.). Река Аппер-Сэдл, Нью-Джерси: Прентис-Холл. ISBN 978-0-13-604259-4 .
Дальнейшее чтение
[ редактировать ]- Дауни, Аллен Б. (май 2012 г.). Думай Python: как думать как ученый-компьютерщик (изд. версии 1.6.6). Издательство Кембриджского университета. ISBN 978-0-521-72596-5 .
- Гамильтон, Наоми (5 августа 2008 г.). «А-Я языков программирования: Python» . Компьютерный мир . Архивировано из оригинала 29 декабря 2008 года . Проверено 31 марта 2010 г.
- Лутц, Марк (2013). Изучение Python (5-е изд.). О'Рейли Медиа. ISBN 978-0-596-15806-4 .
- Саммерфилд, Марк (2009). Программирование на Python 3 (2-е изд.). Аддисон-Уэсли Профессионал. ISBN 978-0-321-68056-3 .
- Рамальо, Лучано (май 2022 г.). Свободный Питон . О'Рейли Медиа. ISBN 978-1-4920-5632-4 .
Внешние ссылки
[ редактировать ]- Python (язык программирования)
- Языки программирования на основе классов
- Интерфейс ноутбука
- Информатика в Нидерландах
- Параллельные языки программирования
- Кроссплатформенное бесплатное программное обеспечение
- Кроссплатформенное программное обеспечение
- Голландские изобретения
- Динамически типизированные языки программирования
- Образовательные языки программирования
- Языки программирования высокого уровня
- Информационные технологии в Нидерландах
- Мультипарадигмальные языки программирования
- Объектно-ориентированные языки программирования
- Языки программирования сопоставления шаблонов
- Языки программирования
- Языки программирования, созданные в 1991 году.
- Языки сценариев
- Текстоориентированные языки программирования