Python - это интерпретируемый язык программирования общего назначения высокого уровня. Его философия дизайна подчеркивает удобочитаемость кода с использованием значительных отступов. Его языковые конструкции, а также объектно-ориентированный подход призваны помочь программистам писать ясный, логичный код для небольших и крупномасштабных проектов.
Python имеет динамическую типизацию и сборщик мусора. Он поддерживает несколько парадигм программирования, включая структурированное (в частности, процедурное ), объектно-ориентированное и функциональное программирование. Его часто называют языком с "включенными батареями" из-за его обширной стандартной библиотеки.
Гвидо ван Россум начал работать над Python в конце 1980-х, как преемником языка программирования ABC, и впервые выпустил его в 1991 году как Python 0.9.0. Python 2.0 был выпущен в 2000 году и представил новые функции, такие как понимание списков и систему сбора мусора с использованием подсчета ссылок. Python 3.0 был выпущен в 2008 году и представлял собой серьезную версию языка, не имеющую полной обратной совместимости. Python 2 был прекращен с версией 2.7.18 в 2020 году.
Python неизменно считается одним из самых популярных языков программирования.
Python был задуман в конце 1980-х Гвидо ван Россумом из Centrum Wiskunde amp; Informatica (CWI) в Нидерландах как преемник языка программирования ABC, вдохновленного SETL, способного обрабатывать исключения и взаимодействовать с операционной системой Amoeba. Его реализация началась в декабре 1989 года. Ван Россум взял на себя исключительную ответственность за проект, как ведущий разработчик, до 12 июля 2018 года, когда он объявил о своем «постоянном отпуске» от своих обязанностей в качестве « Доброжелательного диктатора на всю жизнь » Python. сообщество даровало ему, чтобы отразить его долгосрочное обязательство в качестве главного лица, принимающего решения по проекту. В январе 2019 года активные разработчики ядра Python избрали руководящий совет из пяти человек, который возглавит проект.
Python 2.0 был выпущен 16 октября 2000 года с множеством важных новых функций, включая сборщик мусора с обнаружением циклов и поддержку Unicode.
Python 3.0 был выпущен 3 декабря 2008 года. Это была основная версия языка, не имеющая полной обратной совместимости. Многие из его основных функций были портированные на Python 2.6.x и 2.7.x версии серии. Релизы Python 3 включают 2to3
утилиту, которая автоматизирует перевод кода Python 2 в Python 3.
Дата окончания жизненного цикла Python 2.7 была первоначально установлена на 2015 год, а затем перенесена на 2020 год из-за опасений, что большая часть существующего кода не может быть легко перенесена на Python 3. Никаких дополнительных исправлений безопасности или других улучшений выпущено не будет. для этого. С истекшим сроком службы Python 2 поддерживается только Python 3.6.x и новее.
Python 3.9.2 и 3.8.8 были ускорены, поскольку все версии Python (включая 2.7) имели проблемы с безопасностью, что приводило к возможному удаленному выполнению кода и заражению веб-кеша.
Python - это язык программирования с несколькими парадигмами. Объектно-ориентированное программирование и структурное программирование полностью поддерживаются, и многие из его функций поддерживают функциональное программирование и аспектно-ориентированное программирование (в том числе с помощью метапрограммирования и метаобъектов (магические методы)). Многие другие парадигмы поддерживаются посредством расширений, включая проектирование по контракту и логическое программирование.
Python использует динамическую типизацию и комбинацию подсчета ссылок и сборщика мусора, определяющего цикл, для управления памятью. Он также имеет динамическое разрешение имен ( позднее связывание ), которое связывает имена методов и переменных во время выполнения программы.
Дизайн Python предлагает некоторую поддержку функционального программирования в традициях Lisp. Он имеет filter
, map
и reduce
функции; составить список понятий, словарей, наборов и выражений генератора. Стандартная библиотека имеет два модуля ( itertools
и functools
), которые реализуют функциональные инструменты, заимствованные из Haskell и Standard ML.
Основная философия языка кратко изложена в документе The Zen of Python ( PEP 20), который включает такие афоризмы, как:
Вместо того, чтобы иметь все свои функциональные возможности, встроенные в ядро, Python был разработан с учетом высокой расширяемости (с помощью модулей). Эта компактная модульность сделала его особенно популярным как средство добавления программируемых интерфейсов к существующим приложениям. Представление Ван Россума о небольшом базовом языке с большой стандартной библиотекой и легко расширяемым интерпретатором возникло из-за его разочарования в ABC, которая придерживалась противоположного подхода. Его часто называют языком с "включенными батареями" из-за его обширной стандартной библиотеки.
Python стремится к более простому и менее загроможденному синтаксису и грамматике, давая разработчикам возможность выбора в своей методологии кодирования. В отличие от девиза Perl « есть более одного способа сделать это », Python придерживается философии дизайна «должен быть один - и желательно только один - очевидный способ сделать это». Алекс Мартелли, сотрудник в Foundation Python Software и Python автор книги пишет, что « Для того, чтобы описать то, как„умный“это не считается комплиментом в культуре Python.»
Разработчики Python стремятся избежать преждевременной оптимизации и отклоняют исправления для некритических частей эталонной реализации CPython, которые предлагали бы незначительное увеличение скорости за счет ясности. Когда важна скорость, программист Python может переместить критичные ко времени функции в модули расширения, написанные на таких языках, как C, или использовать PyPy, компилятор «точно в срок». Также доступен Cython, который переводит скрипт Python на C и выполняет прямые вызовы API уровня C в интерпретатор Python.
Разработчики Python стремятся к тому, чтобы язык был интересным в использовании. Это отражено в его названии - дань уважения британской комедийной группе Монти Пайтон - и иногда в игровых подходах к учебным пособиям и справочным материалам, таким как примеры, которые относятся к спаму и яйцам (отсылка к наброску Монти Пайтон ) вместо стандартного foo и bar.
Распространенным неологизмом в сообществе Python является питонический, который может иметь широкий диапазон значений, связанных со стилем программы. Сказать, что код питонический, значит сказать, что он хорошо использует идиомы Python, что он естественен или демонстрирует свободное владение языком, что он соответствует минималистской философии Python и делает упор на удобочитаемость. Напротив, код, который трудно понять или который читается как грубая транскрипция с другого языка программирования, называется непифоническим.
Пользователей и почитателей Python, особенно тех, кого считают знающими или опытными, часто называют питонистами.
Python задуман как легко читаемый язык. Его форматирование визуально не загромождено, и в нем часто используются английские ключевые слова, а в других языках используются знаки препинания. В отличие от многих других языков, в нем не используются фигурные скобки для разделения блоков, а точки с запятой после операторов разрешены, но используются редко, если вообще используются. В нем меньше синтаксических исключений и особых случаев, чем в C или Pascal.
Python использует пробельные отступы, а не фигурные скобки или ключевые слова, чтобы разграничить блоки. Увеличение отступа происходит после определенных утверждений; уменьшение отступа означает конец текущего блока. Таким образом, визуальная структура программы точно представляет семантическую структуру программы. Эту функцию иногда называют правилом оффсайда, которое разделяют некоторые другие языки, но в большинстве языков отступы не имеют семантического значения. Рекомендуемый размер отступа - четыре пробела.
Заявления Python включают (среди прочего):
=
. if
Заявление, которое условно выполняет блок кода, а также else
и elif
(сжатие еще-если). for
Заявление, которое перебирает итератор объекта, захватив каждый элемент в локальном переменную для использования прилагаемого блока. while
Заявление, которое выполняет блок кода до тех пор, как его условие истинно. try
Заявление, которое позволяет исключения, поднятые в прилагаемом блоке коды пойманы и обработаны except
пунктами; это также гарантирует, что код очистки в finally
блоке всегда будет выполняться независимо от того, как блок выходит.raise
Заявление, используется для повышения заданного исключения или ререйз перехваченных исключений.class
Заявление, которое выполняет блок кода и присоединяет его локальное пространство имен в класс, для использования в объектно-ориентированном программировании.def
Утверждение, которое определяет функцию или метод. with
Заявление, которое заключает в себе блок кода в качестве менеджера контекста (например, приобретая замок до того, как блок кода выполняется захват и освобождение после этого, или открыть файл, а затем закрыть его), что позволяет ресурсов сбора-является инициализация (RAII) -подобное поведение и заменяет обычную идиому try / finally.break
выходит из цикла.continue
пропускает эту итерацию и переходит к следующему элементу.del
удаляет переменную, что означает, что ссылка из имени на значение удаляется, и попытка использовать эту переменную приведет к ошибке. Удаленную переменную можно переназначить.pass
Заявление, которое служит в качестве NOP. Синтаксически необходимо создать пустой блок кода. assert
Заявление, используется во время отладки для проверки условий, которые должны применяться.yield
Утверждение, которое возвращает значение из генератора функции и yield
также является оператором. Эта форма используется для реализации сопрограмм.return
Заявление, используется для возврата значения из функции. import
Заявление, которое используется для импорта модулей, функции или переменные могут быть использованы в текущей программе.Оператор присваивания ( =
) работает путем привязки имени как ссылки к отдельному, динамически выделяемому объекту. Впоследствии переменные могут быть повторно привязаны к любому объекту в любое время. В Python имя переменной является универсальным держателем ссылки и не имеет связанного с ним фиксированного типа данных. Однако в данный момент переменная будет ссылаться на некоторый объект, который будет иметь тип. Это называется динамической типизацией и отличается от языков программирования со статической типизацией, где каждая переменная может содержать значения только определенного типа.
Python не поддерживает оптимизацию хвостовых вызовов или первоклассные продолжения, и, по словам Гвидо ван Россума, этого никогда не будет. Однако лучшая поддержка функций, подобных сопрограммам, обеспечивается расширением генераторов Python. До версии 2.5 генераторы были ленивыми итераторами ; информация передавалась из генератора в одном направлении. Из Python 2.5 можно передавать информацию обратно в функцию генератора, а из Python 3.3 информация может передаваться через несколько уровней стека.
Некоторые выражения Python похожи на выражения, встречающиеся в таких языках, как C и Java, а некоторые нет:
//
и деление с плавающей запятой /
. Python также использует **
оператор для возведения в степень.@
инфиксный оператор. Он предназначен для использования такими библиотеками, как NumPy, для умножения матриц.:=
был введен синтаксис, называемый «оператором моржа». Он присваивает значения переменным как часть более крупного выражения.==
сравнивается по значению, а в Java сравниваются числа по значению и объекты по ссылке. (Сравнение значений в Java для объектов может выполняться с помощью этого equals()
метода.) is
Оператор Python может использоваться для сравнения идентификаторов объектов (сравнение по ссылке). Например, в Python сравнения могут быть связаны.a lt;= b lt;= c
and
, or
, not
для своих логических операторов, а не символического amp;amp;
, ||
, !
используемые в Java и C.x if c else y
c ? x : y
[1, 2, 3]
(1, 2, 3)
+
t
(1, 2, 3)
t = t + (4, 5)
t + (4, 5)
(1, 2, 3, 4, 5)
t
t
%
. Это работает аналогично printf
форматированию строк в C, например, вычисляет. В Python 3 и 2.6+ это было дополнено методом класса, например. Python 3.6 добавлен "F-строка":."spam=%s eggs=%d" % ("blah", 2)
"spam=blah eggs=2"
format()
str
"spam={0} eggs={1}".format("blah", 2)
blah = "blah"; eggs = 2; f'spam={blah} eggs={eggs}'
"spam" + "eggs"
"spameggs"
"2" + "2"
"22"
\
в качестве escape-символа используется обратная косая черта (). Строковая интерполяция стала доступна в Python 3.6 как «форматированные строковые литералы».r
. Escape-последовательности не интерпретируются; следовательно, необработанные строки полезны там, где обычны буквальные обратные косые черты, такие как регулярные выражения и пути в стиле Windows. Сравните « @
-квотирование» в C #.a[key]
, или. Индексы отсчитываются от нуля, а отрицательные индексы относятся к концу. Ломтики взять элементы из стартового индекса до, но не включая, стоп индекс. Третий параметр среза, называемый step или stride, позволяет пропускать и переворачивать элементы. Индексы срезов могут быть опущены, например, возвращает копию всего списка. Каждый элемент фрагмента - это неглубокая копия. a[start:stop]
a[start:stop:step]
a[:]
В Python строго соблюдается различие между выражениями и операторами, в отличие от таких языков, как Common Lisp, Scheme или Ruby. Это приводит к дублированию некоторых функций. Например:
for
-loopsif
блоковeval()
Против exec()
встроенных функций (в Python 2, exec
это утверждение); первая предназначена для выражений, вторая - для операторов.Операторы не могут быть частью выражения, поэтому список и другие понимания или лямбда-выражения, все из которых являются выражениями, не могут содержать операторов. Частным случаем этого является то, что оператор присваивания, такой как не может быть частью условного выражения условного оператора. Это дает то преимущество, что позволяет избежать классической ошибки C, заключающейся в ошибочном принятии оператора присваивания за оператор равенства в условиях: является синтаксически допустимым (но, вероятно, непреднамеренным) кодом C, но вызывает синтаксическую ошибку в Python. a = 1
=
==
if (c = 1) {... }
if c = 1:...
Методы объектов - это функции, прикрепленные к классу объекта; синтаксис для обычных методов и функций является синтаксическим сахаром для. Методы Python имеют явный параметр для доступа к данным экземпляра, в отличие от неявного self (или) в некоторых других объектно-ориентированных языках программирования (например, C ++, Java, Objective-C или Ruby ). Помимо этого, Python также предоставляет методы, часто называемые dunder-методами (из-за того, что их имена начинаются и заканчиваются двойным подчеркиванием), чтобы позволить определяемым пользователем классам изменять способ их обработки с помощью собственных операций, таких как длина, сравнение, в арифметике. операции, преобразование типов и многое другое. instance.method(argument)
Class.method(instance, argument)
self
this
Python использует утиную типизацию и имеет типизированные объекты, но нетипизированные имена переменных. Ограничения типа не проверяются во время компиляции ; скорее, операции с объектом могут завершиться неудачно, что означает, что данный объект не относится к подходящему типу. Несмотря на то, что Python является динамически типизированным, он строго типизирован, запрещая операции, которые не определены четко (например, добавление числа в строку), а не пытается молча понять их.
Python позволяет программистам определять свои собственные типы с помощью классов, которые чаще всего используются для объектно-ориентированного программирования. Новые экземпляры классов создаются путем вызова класса (например, или), а классы являются экземплярами метакласса (сам является экземпляром самого себя), что позволяет метапрограммировать и отражать. SpamClass()
EggsClass()
type
До версии 3.0 в Python было два типа классов: старый и новый. Синтаксис обоих стилей одинаков, разница в том, object
унаследован ли класс прямо или косвенно (все классы нового стиля наследуются от object
и являются экземплярами type
). В версиях Python 2, начиная с Python 2.2, могут использоваться оба типа классов. Классы старого стиля были исключены в Python 3.0.
Долгосрочный план заключается в поддержке постепенной типизации, и начиная с Python 3.5 синтаксис языка позволяет указывать статические типы, но они не проверяются в реализации по умолчанию, CPython. Экспериментальная дополнительная проверка статического типа с именем mypy поддерживает проверку типов во время компиляции.
Тип | Изменчивость | Описание | Примеры синтаксиса |
---|---|---|---|
bool | неизменный | Логическое значение | True False |
bytearray | изменчивый | Последовательность байтов | bytearray(b'Some ASCII') bytearray(b"Some ASCII") bytearray([119, 105, 107, 105]) |
bytes | неизменный | Последовательность байтов | b'Some ASCII' b"Some ASCII" bytes([119, 105, 107, 105]) |
complex | неизменный | Комплексное число с действительной и мнимой частями | 3+2.7j 3 + 2.7j |
dict | изменчивый | Ассоциативный массив (или словарь) пар ключ-значение; могут содержать смешанные типы (ключи и значения), ключи должны быть хешируемого типа | {'key1': 1.0, 3: False} {} |
ellipsis | неизменный | Многоточие заполнитель должен использоваться в качестве индекса в NumPy массивов | ... Ellipsis |
float | неизменный | Число двойной точности с плавающей запятой. Точность зависит от машины, но на практике обычно реализуется как 64-битное число IEEE 754 с точностью 53 бита. |
|
frozenset | неизменный | Неупорядоченный набор, не содержащий дубликатов; может содержать смешанные типы, если хешируемый | frozenset([4.0, 'string', True]) |
int | неизменный | Целое число неограниченной величины | 42 |
list | изменчивый | Список, может содержать смешанные типы | [4.0, 'string', True] [] |
NoneType | неизменный | Объект, представляющий отсутствие значения, часто называемый null в других языках. | None |
NotImplementedType | неизменный | Заполнитель, который может быть возвращен перегруженными операторами для указания неподдерживаемых типов операндов. | NotImplemented |
range | неизменный | Последовательность чисел, обычно используемая для выполнения определенного количества for циклов в циклах. | range(-1, 10) range(10, -5, -2) |
set | изменчивый | Неупорядоченный набор, не содержащий дубликатов; может содержать смешанные типы, если хешируемый | {4.0, 'string', True} set() |
str | неизменный | Строка символов : последовательность кодовых Unicode | 'Wikipedia' "Wikipedia" """Spanning multiple lines""" |
tuple | неизменный | Может содержать смешанные типы | (4.0, 'string', True) ('single element',) () |
^ a Не доступен напрямую по имени
Python имеет обычные символы для арифметических операторов ( +
, -
, *
, /
), оператор пола деления //
и операции по модулю %
(где остаток может быть отрицательным, например 4 % -3 == -2
). Она также имеет **
для потенцирования, например, 5**3 == 125
и 9**0.5 == 3.0
, и оператора матричного умножения @
. Эти операторы работают как в традиционной математике; с теми же правилами приоритета операторы инфиксные ( +
а -
также могут быть унарными для представления положительных и отрицательных чисел соответственно).
Деление целых чисел дает результаты с плавающей запятой. Поведение деления со временем значительно изменилось:
/
версии 3.0) изменен на всегда деление с плавающей запятой, например.5/2 == 2.5
7/3 == 2
и -7/3 == -3
. Представлен //
оператор деления этажей. Так 7//3 == 2
, -7//3 == -3
, 7.5//3 == 2.0
и -7.5//3 == -3.0
. Добавление заставляет модуль использовать правила Python 3.0 для деления (см. Далее).from __future__ import division
/
Оператор целочисленное деление, если оба операнда являются целыми числами, и деление с плавающей точкой в противном случае. Целочисленное деление округляется до 0, например, и.7/3 == 2
-7/3 == -2
С точки зрения Python, /
это верно деление (или просто разделение), и //
это пол деление. /
до версии 3.0 классическое деление.
Округление в сторону отрицательной бесконечности, хотя и отличается от большинства языков, добавляет последовательности. Например, это означает, что уравнение всегда верно. Это также означает, что уравнение справедливо как для положительных, так и для отрицательных значений. Однако сохранение справедливости этого уравнения означает, что хотя результат, как и ожидалось, находится в полуоткрытом интервале [0, b), где - положительное целое число, он должен лежать в интервале ( b, 0], когда отрицательный. (a + b)//b == a//b + 1
b*(a//b) + a%b == a
a
a%b
b
b
Python предоставляет round
функцию округления числа с плавающей запятой до ближайшего целого числа. Для разрешения конфликтов Python 3 использует округление до четности : round(1.5)
и round(2.5)
оба производят 2
. В версиях до 3 использовалось округление от нуля : round(0.5)
есть 1.0
, round(-0.5)
есть −1.0
.
Python допускает логические выражения с несколькими отношениями равенства способом, совместимым с общим использованием в математике. Например, выражение a lt; b lt; c
проверяет, является ли a
меньше b
и b
меньше c
. Языки, производные от языка C, интерпретируют это выражение по-разному: в языке C выражение сначала вычисляется a lt; b
, в результате чего получается 0 или 1, а затем этот результат сравнивается с c
.
Python использует арифметику произвольной точности для всех целочисленных операций. Decimal
Типа / класс в decimal
модуле дает число с плавающей десятичной точкой с заранее определенной точностью и произвольной несколько режимов округления. Fraction
Класс в fractions
модуле обеспечивает произвольную точность для рациональных чисел.
Благодаря обширной математической библиотеке Python и сторонней библиотеке NumPy, которая дополнительно расширяет собственные возможности, он часто используется в качестве научного языка сценариев для помощи в таких проблемах, как обработка и манипулирование числовыми данными.
Программа Hello World :
print('Hello, world!')
Программа для вычисления факториала положительного целого числа:
n = int(input('Type a number, and its factorial will be printed: ')) if n lt; 0: raise ValueError('You must enter a non-negative integer') factorial = 1 for i in range(2, n + 1): factorial *= i print(factorial)
Большая стандартная библиотека Python, которую обычно называют одной из самых сильных сторон, предоставляет инструменты, подходящие для многих задач. Для приложений с выходом в Интернет поддерживаются многие стандартные форматы и протоколы, такие как MIME и HTTP. Он включает модули для создания графических пользовательских интерфейсов, подключения к реляционным базам данных, генерации псевдослучайных чисел, арифметики с десятичными дробями произвольной точности, манипулирования регулярными выражениями и модульного тестирования.
Некоторые части стандартной библиотеки охвачены спецификациями (например, реализация интерфейса шлюза веб-сервера (WSGI) wsgiref
следует за PEP 333), но большинство модулей нет. Они указаны в их коде, внутренней документации и наборах тестов. Однако, поскольку большая часть стандартной библиотеки представляет собой кросс-платформенный код Python, только несколько модулей нуждаются в изменении или переписывании для различных реализаций.
По состоянию на сентябрь 2021 года индекс пакетов Python (PyPI), официальный репозиторий стороннего программного обеспечения Python, содержит более 329000 пакетов с широким набором функций, в том числе:
Большинство реализаций Python (включая CPython) включают цикл чтения-оценки-печати (REPL), позволяющий им функционировать как интерпретатор командной строки, для которого пользователь вводит операторы последовательно и немедленно получает результаты.
Другие оболочки, включая IDLE и IPython, добавляют дополнительные возможности, такие как улучшенное автозаполнение, сохранение состояния сеанса и подсветка синтаксиса.
Помимо стандартных настольных интегрированных сред разработки, существуют IDE на основе веб-браузера ; SageMath (предназначен для разработки программ Python, связанных с наукой и математикой); PythonAnywhere, IDE на основе браузера и среда хостинга; и Canopy IDE, коммерческая среда разработки Python, ориентированная на научные вычисления.
CPython - эталонная реализация Python. Он написан на C, соответствует стандарту C89 с несколькими избранными функциями C99 (с более поздними версиями C он считается устаревшим; CPython включает свои собственные расширения C, но сторонние расширения не ограничиваются более старыми версиями C, например, могут быть реализованы с C11 или C ++). Он компилирует программы Python в промежуточный байт-код, который затем выполняется его виртуальной машиной. CPython распространяется с большой стандартной библиотекой, написанной на смеси C и собственного Python. Он доступен для многих платформ, включая Windows (начиная с Python 3.9 установщик Python намеренно не может быть установлен в Windows 7 и 8; Windows XP поддерживалась до Python 3.5) и большинство современных Unix-подобных систем, включая macOS (и Apple M1 Mac, начиная с Python 3.9.1, с экспериментальным установщиком) и неофициальной поддержкой, например, VMS. Переносимость платформы была одним из ее первых приоритетов, во время периода Python 1 и Python 2 поддерживались даже OS / 2 и Solaris ; с тех пор поддержка была прекращена для многих платформ.
Другие JIT-компиляторы Python были разработаны, но в настоящее время не поддерживаются:
Существует несколько компиляторов для объектных языков высокого уровня: либо неограниченный Python, либо ограниченное подмножество Python, либо язык, похожий на Python, в качестве исходного языка:
Сравнение производительности различных реализаций Python на нечисловой (комбинаторной) рабочей нагрузке было представлено на EuroSciPy '13. Производительность Python по сравнению с другими языками программирования также проверяется The Computer Language Benchmarks Game.
Разработка Python осуществляется в основном с помощью процесса Python Enhancement Proposal (PEP), основного механизма для предложения основных новых функций, сбора комментариев сообщества по вопросам и документирования решений по проектированию Python. Стиль кодирования Python рассматривается в PEP 8. Выдающиеся PEP рассматриваются и комментируются сообществом Python и руководящим советом.
Улучшение языка соответствует развитию эталонной реализации CPython. Список рассылки python-dev является основным форумом для разработки языка. Конкретные проблемы обсуждаются в системе отслеживания ошибок Roundup, размещенной на bugs.python.org. Первоначально разработка велась в собственном репозитории исходного кода под управлением Mercurial, пока Python не перешел на GitHub в январе 2017 года.
Публичные выпуски CPython бывают трех типов, в зависимости от того, какая часть номера версии увеличивается:
Многие альфа-, бета-версии и релиз-кандидаты также выпускаются в качестве предварительных версий и для тестирования перед финальными версиями. Хотя для каждого выпуска есть приблизительный график, они часто откладываются, если код не готов. Команда разработчиков Python отслеживает состояние кода, выполняя большой набор модульных тестов во время разработки.
Основная научная конференция по Python - PyCon. Существуют также специальные программы наставничества Python, такие как Pyladies.
Python 3.10 устарел wstr
(будет удален в Python 3.12; это означает, что к тому времени необходимо будет изменить расширения Python), а также планирует добавить сопоставление с образцом в язык.
Инструменты, которые могут генерировать документацию для Python API, включают pydoc (доступный как часть стандартной библиотеки), Sphinx, Pdoc и его форки, Doxygen и Graphviz, среди других.
Название Python происходит от британской комедийной группы Monty Python, которой создатель Python Гвидо ван Россум наслаждался во время разработки языка. Ссылки Monty Python часто появляются в коде и культуре Python; например, метасинтаксические переменные, часто используемые в литературе по Python, - это спам и яйца вместо традиционных foo и bar. Официальная документация Python также содержит различные ссылки на подпрограммы Monty Python.
Префикс Py- используется, чтобы показать, что что-то связано с Python. Примеры использования этого префикса в именах приложений Python или библиотек включают Pygame, связывания из СВД с Python (обычно используется для создания игр); PyQt и PyGTK, которые связывают Qt и GTK с Python соответственно; и PyPy, реализация Python, изначально написанная на Python.
С 2003 года Python неизменно входит в десятку самых популярных языков программирования в Индексе сообщества программистов TIOBE, где по состоянию на октябрь 2021 года он является самым популярным языком (опережая Java и C). Он был выбран языком программирования года (за «самый высокий рост рейтингов за год») в 2007, 2010, 2018 и 2020 годах (единственный язык, который делал это четыре раза).
Эмпирическое исследование показало, что языки сценариев, такие как Python, более производительны, чем обычные языки, такие как C и Java, для задач программирования, связанных с манипуляциями со строками и поиском в словаре, и определило, что потребление памяти часто было «лучше, чем у Java, а не намного хуже, чем C или C ++ ».
Крупные организации, использующие Python, включают Википедию, Google, Yahoo!, CERN, NASA, Facebook, Amazon, Instagram, Spotify и некоторые более мелкие организации, такие как ILM и ITA. Социальная новостная сеть Reddit была написана в основном на Python.
Python может служить языком сценариев для веб-приложений, например, через mod_wsgi для веб-сервера Apache. В интерфейсе шлюза веб-сервера был разработан стандартный API для упрощения работы этих приложений. Веб-фреймворки, такие как Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle и Zope, поддерживают разработчиков в разработке и обслуживании сложных приложений. Pyjs и IronPython могут использоваться для разработки клиентских приложений на основе Ajax. SQLAlchemy можно использовать как средство отображения данных в реляционной базе данных. Twisted - это фреймворк для программирования связи между компьютерами, который используется (например) в Dropbox.
Такие библиотеки, как NumPy, SciPy и Matplotlib, позволяют эффективно использовать Python в научных вычислениях, со специализированными библиотеками, такими как Biopython и Astropy, обеспечивающими функциональность, специфичную для конкретной предметной области. SageMath - это система компьютерной алгебры с интерфейсом записной книжки, программируемым на Python: ее библиотека охватывает многие аспекты математики, включая алгебру, комбинаторику, числовую математику, теорию чисел и исчисление. OpenCV имеет привязки Python с богатым набором функций для компьютерного зрения и обработки изображений.
Python обычно используется в искусственном интеллекте проектов и проектах машинного обучения с помощью библиотек как TensorFlow, Keras, Pytorch и Scikit учиться. Как язык сценариев с модульной архитектурой, простым синтаксисом и инструментами обработки расширенного текста Python часто используется для обработки естественного языка.
Python был успешно встроен во многие программные продукты в качестве языка сценариев, в том числе в программное обеспечение для метода конечных элементов, такое как Abaqus, средство параметрического моделирования 3D, такое как FreeCAD, пакеты 3D-анимации, такие как 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, modo., MotionBuilder, Softimage, редактор визуальных эффектов Nuke, программы для создания 2D-изображений, такие как GIMP, Inkscape, Scribus и Paint Shop Pro, а также программы для нотной записи, такие как Scorewriter и capella. GNU Debugger использует Python как красивый принтер для отображения сложных структур, таких как контейнеры C ++. Esri продвигает Python как лучший выбор для написания скриптов в ArcGIS. Он также использовался в нескольких видеоиграх и был принят как первый из трех доступных языков программирования в Google App Engine, два других - Java и Go.
Многие операционные системы включают Python в качестве стандартного компонента. Он поставляется с большинством дистрибутивов Linux, AmigaOS 4 (с использованием Python 2.7), FreeBSD (в виде пакета), NetBSD, OpenBSD (в виде пакета) и macOS и может использоваться из командной строки (терминал). Многие дистрибутивы Linux используют установщики, написанные на Python: Ubuntu использует установщик Ubiquity, а Red Hat Linux и Fedora используют установщик Anaconda. Gentoo Linux использует Python в системе управления пакетами, Portage.
Python широко используется в индустрии информационной безопасности, в том числе при разработке эксплойтов.
Большая часть программного обеспечения Sugar для One Laptop per Child XO, разрабатываемого в настоящее время в Sugar Labs, написано на Python. В проекте одноплатного компьютера Raspberry Pi в качестве основного языка пользовательского программирования принят Python.
LibreOffice включает Python и намеревается заменить Java на Python. Его поставщик сценариев Python является основной функцией, начиная с версии 4.0 от 7 февраля 2013 года.
Дизайн и философия Python повлияли на многие другие языки программирования:
Методы разработки Python также были скопированы на других языках. Например, практика требования документа, описывающего обоснование и проблемы, связанные с изменением языка (в Python, PEP), также используется в Tcl, Erlang и Swift.