Гвидо ван Россум начал работать над Python в конце 1980-х годов как над преемником языка программирования ABC и впервые выпустил его в 1991 году как Python 0.9.0. [35] Python 2.0 был выпущен в 2000 году. Python 3.0, выпущенный в 2008 году, был крупной ревизией, не полностью обратно совместимой с более ранними версиями. Python 2.7.18, выпущенный в 2020 году, был последним выпуском Python 2. [36]
Python неизменно занимает место одного из самых популярных языков программирования и получил широкое распространение в сообществе машинного обучения . [37] [38] [39] [40]
История
Python был изобретен в конце 1980-х годов [41] Гвидо ван Россумом в Centrum Wiskunde & Informatica (CWI) в Нидерландах как преемник языка программирования ABC , который был вдохновлен SETL [42], способным обрабатывать исключения и взаимодействовать с операционной системой Amoeba . [12] Его реализация началась в декабре 1989 года. [43] Ван Россум нес исключительную ответственность за проект в качестве ведущего разработчика до 12 июля 2018 года, когда он объявил о своем «постоянном отпуске» от своих обязанностей « доброжелательного пожизненного диктатора » Python (BDFL), титул, который сообщество Python даровало ему, чтобы отразить его долгосрочную приверженность в качестве главного лица, принимающего решения в проекте [44] (с тех пор он вышел из отставки и носит самоназвание «BDFL-emeritus»). В январе 2019 года активные разработчики ядра Python избрали Руководящий совет из пяти человек для руководства проектом. [45] [46]
Python 2.0 был выпущен 16 октября 2000 года со многими новыми важными функциями, такими как списочные выражения , сборка мусора с обнаружением циклов , подсчет ссылок и поддержка Unicode . [47] Python 3.0 был выпущен 3 декабря 2008 года, и многие из его основных функций были перенесены в Python 2.6.x [48] и 2.7.x. Выпуски Python 3 включают 2to3утилиту, которая автоматизирует перевод кода Python 2 в Python 3. [49]
Окончание поддержки Python 2.7 изначально было назначено на 2015 год, затем перенесено на 2020 год из-за опасений, что большой объем существующего кода не сможет быть легко перенесен на Python 3. [50] [51] Для него не будет выпущено никаких дальнейших исправлений безопасности или других улучшений. [52] [53] В настоящее время поддерживаются только версии 3.9 и более поздние (проблемы безопасности 2023 года были исправлены, например, в 3.7.17, последнем выпуске 3.7.x [54] ). Хотя Python 2.7 и более ранние версии официально не поддерживаются, другая неофициальная реализация Python, PyPy , продолжает поддерживать Python 2, то есть «2.7.18+» (плюс 3.10), где плюс означает (по крайней мере, некоторые) « обратно перенесенные обновления безопасности». [55]
В 2021 году (и снова дважды в 2022 году, и в сентябре 2024 года для Python 3.12.6 до 3.8.20) обновления безопасности были ускорены, поскольку все версии Python были небезопасны (включая 2.7 [56] ) из-за проблем безопасности, приводящих к возможному удаленному выполнению кода [57] и отравлению веб-кэша . [58] В 2022 году были ускорены Python 3.10.4 и 3.9.12 [59] и 3.8.13 из-за множества проблем безопасности. [60] Когда в мае 2022 года был выпущен Python 3.9.13, было объявлено, что серия 3.9 (присоединившаяся к более старым сериям 3.8 и 3.7) будет получать исправления безопасности только в будущем. [61] 7 сентября 2022 года было выпущено четыре новых релиза из-за потенциальной атаки типа «отказ в обслуживании» : 3.10.7, 3.9.14, 3.8.14 и 3.7.14. [62] [63]
Каждый выпуск Python, начиная с версии 3.5, добавлял в язык некоторый синтаксис. В версии 3.10 был добавлен |оператор типа union [64] и ключевые слова matchand case(для структурных операторов сопоставления с образцом ). В версии 3.11 была расширена функциональность обработки исключений . В версии Python 3.12 было добавлено новое ключевое слово type. Среди заметных изменений в версии 3.11 по сравнению с 3.10 — увеличенная скорость выполнения программ и улучшенное сообщение об ошибках. [65] Python 3.11, как утверждается, на 10–60 % быстрее Python 3.10, а Python 3.12 добавляет еще 5 % сверх этого. В нем также улучшены сообщения об ошибках и много других изменений.
Python 3.13 представляет больше синтаксиса для типов, новый и улучшенный интерактивный интерпретатор ( REPL ), включающий многострочное редактирование и поддержку цвета; инкрементальный сборщик мусора (создающий более короткие паузы для сбора в программах с большим количеством объектов и являющийся дополнением к улучшенной скорости в 3.11 и 3.12), а также экспериментальный компилятор just-in-time (JIT) (такие функции можно/нужно включать специально для увеличения скорости) [66] и экспериментальный режим сборки со свободными потоками, который отключает глобальную блокировку интерпретатора (GIL), позволяя потокам работать более параллельно, последняя функция включается с помощью python3.13tили python3.13t.exe.
Python 3.13 вносит некоторые изменения в поведение, например, новую «четко определенную семантику», исправляет ошибки (плюс множество удалений устаревших классов, функций и методов, а также удаляет часть API C и устаревших модулей): «[Старая] реализация and locals()медленная frame.f_locals, непоследовательная и глючная [и у нее] есть много крайних случаев и странностей. Код, который их обходит, может потребовать изменения. Код, который используется locals()для простого шаблонирования или отладки печати, будет продолжать работать правильно». [67]
С 7 октября 2024 года [обновлять]Python 3.13 является последней стабильной версией, а 3.13 и 3.12 — единственные версии с активной (а не только поддержкой безопасности) поддержкой, а Python 3.9 — самая старая поддерживаемая версия Python (хотя и находящаяся в фазе «поддержки безопасности»), поскольку Python 3.8 подходит к концу . [68] Начиная с 3.13, она и более поздние версии имеют 2 года полной поддержки (вместо полутора лет); за которыми следуют 3 года поддержки безопасности (при том же общем объеме поддержки, что и раньше).
Некоторые (еще) модули стандартной библиотеки и многие устаревшие классы, функции и методы будут удалены в Python 3.15 или 3.16. [69] [70]
В Python 3.14 (сейчас в альфа-версии 1) [71] внесены изменения в аннотации, а PEP 649 «[сохраняет] почти все существующее поведение аннотаций из стандартной семантики». [72]
Его дизайн предлагает некоторую поддержку функционального программирования в традициях Lisp . Он имеет функции filter, mapи ; списочные интерпретации , словари , множества и выражения генератора . [80] Стандартная библиотека имеет два модуля ( и ), которые реализуют функциональные инструменты, заимствованные из Haskell и Standard ML . [81]reduceitertoolsfunctools
Основная философия языка изложена в « Дзене Питона» (PEP 20), включающем такие афоризмы , как: [82]
Красивое лучше уродливого.
Явное лучше неявного.
Простота лучше сложности.
Сложное лучше запутанного.
Удобочитаемость имеет значение.
Однако функции Python регулярно нарушают эти принципы и подвергаются критике за добавление ненужного раздувания языка. [83] Ответы на эту критику таковы, что Дзен Python — это скорее руководство, чем правило. [84] Добавление некоторых новых функций было настолько спорным, что Гвидо ван Россум ушел с поста Благожелательного пожизненного диктатора после сарказма по поводу добавления оператора выражения присваивания в Python 3.8. [85] [86]
Тем не менее, вместо того, чтобы встраивать все свои функции в ядро, Python был разработан с расчетом на высокую расширяемость с помощью модулей. Эта компактная модульность сделала его особенно популярным как средство добавления программируемых интерфейсов к существующим приложениям. Видение Ван Россума о небольшом базовом языке с большой стандартной библиотекой и легко расширяемым интерпретатором возникло из его разочарования в ABC , которая придерживалась противоположного подхода. [41]
Python утверждает, что стремится к более простому, менее загроможденному синтаксису и грамматике, предоставляя разработчикам выбор в их методологии кодирования. В отличие от девиза Perl « есть более одного способа сделать это », Python придерживается философии «должен быть один — и желательно только один — очевидный способ сделать это». [82] На практике, однако, Python предоставляет много способов выполнить одну и ту же задачу. Например, существует по крайней мере три способа форматирования строкового литерала, без определенности относительно того, какой из них должен использовать программист. [87] Алекс Мартелли , научный сотрудник Python Software Foundation и автор книги Python, написал: «Описывать что-либо как „умное“ не считается комплиментом в культуре Python». [88]
Разработчики Python обычно стремятся избегать преждевременной оптимизации и отклоняют исправления некритических частей эталонной реализации CPython , которые могли бы предложить незначительное увеличение скорости за счет ясности. [89] Скорость выполнения можно повысить, переместив критические по скорости функции в модули расширения, написанные на таких языках, как C, или используя компилятор just-in-time, такой как PyPy . Также возможна кросс-компиляция на другие языки, но она либо не обеспечивает полного ускорения, которого можно было бы ожидать, поскольку Python — очень динамичный язык , либо компилируется ограниченное подмножество Python, и, возможно, семантика немного изменяется. [90]
Разработчики Python стремятся сделать его интересным в использовании. Это отражено в его названии — дань уважения британской комедийной группе Monty Python [91] — и в иногда игривых подходах к руководствам и справочным материалам, таким как использование терминов «спам» и «яйца» (отсылка к скетчу Monty Python ) в примерах вместо часто используемых «foo» и «bar» . [92] [93] Распространенным неологизмом в сообществе Python является pythonic , который имеет широкий спектр значений, связанных со стилем программы. «Питонический» код может хорошо использовать идиомы Python , быть естественным или демонстрировать беглость языка или соответствовать минималистской философии Python и акценту на читаемости. Код, который трудно понять или который читается как грубая транскрипция с другого языка программирования, называется unpythonic . [94]
Синтаксис и семантика
Python призван быть легко читаемым языком. Его форматирование визуально не перегружено и часто использует английские ключевые слова там, где другие языки используют пунктуацию. В отличие от многих других языков, он не использует фигурные скобки для разделения блоков, а точки с запятой после операторов разрешены, но используются редко. Он имеет меньше синтаксических исключений и особых случаев, чем C или Pascal . [95]
Отступ
Python использует отступы с пробелами , а не фигурные скобки или ключевые слова, для разграничения блоков . Увеличение отступа происходит после определенных операторов; уменьшение отступа означает конец текущего блока. [96] Таким образом, визуальная структура программы точно отображает ее семантическую структуру. [97] Эту функцию иногда называют правилом «вне игры» . Некоторые другие языки используют отступы таким образом; но в большинстве отступ не имеет семантического значения. Рекомендуемый размер отступа — четыре пробела. [98]
Оператор присваивания с использованием одного знака равенства=
Оператор if, который условно выполняет блок кода вместе с elseand elif(сокращение else-if)
Оператор for, который выполняет итерацию по итеративному объекту, сохраняя каждый элемент в локальной переменной для использования присоединенным блоком.
Оператор while, который выполняет блок кода до тех пор, пока его условие истинно.
Оператор try, который позволяет перехватывать и обрабатывать исключения, возникающие в присоединенном блоке кода, с помощью exceptпредложений (или нового синтаксиса except*в Python 3.11 для групп исключений [99] ); он также гарантирует, что код очистки в finallyблоке всегда выполняется независимо от того, как блок завершается.
Оператор raise, используемый для вызова указанного исключения или повторного вызова перехваченного исключения.
Оператор class, который выполняет блок кода и присоединяет его локальное пространство имен к классу для использования в объектно-ориентированном программировании.
Оператор with, который заключает блок кода в контекстный менеджер (например, получение блокировки перед его запуском, а затем снятие блокировки или открытие и закрытие файла ) , допуская поведение, подобное получению ресурсов как инициализации (RAII), и заменяя распространенную идиому try/finally [100]
Оператор continue, который пропускает оставшуюся часть текущей итерации и продолжает следующую
Оператор del, который удаляет переменную — удаляет ссылку из имени на значение и выдает ошибку, если переменная упоминается до ее переопределения.
Оператор pass, выступающий в роли NOP , синтаксически необходимый для создания пустого блока кода.
Оператор assert, используемый при отладке для проверки условий, которые должны применяться
Оператор yield, который возвращает значение из функции- генератора (а также оператора); используется для реализации сопрограмм
Оператор return, используемый для возврата значения из функции.
Операторы importи fromиспользуются для импорта модулей, функции или переменные которых могут использоваться в текущей программе.
Операторы matchand case, аналог конструкции оператора switch , сравнивают выражение с одним или несколькими случаями в качестве меры управления потоком.
Оператор присваивания ( =) связывает имя как ссылку на отдельный, динамически выделенный объект . Переменные впоследствии могут быть повторно привязаны в любое время к любому объекту. В Python имя переменной является универсальным держателем ссылки без фиксированного типа данных ; однако оно всегда ссылается на некоторый объект с типом. Это называется динамической типизацией — в отличие от статически типизированных языков, где каждая переменная может содержать только значение определенного типа.
Python не поддерживает оптимизацию хвостового вызова или продолжения первого класса , и, по словам Ван Россума, никогда не будет этого делать. [101] [102] Однако лучшая поддержка функциональности, подобной сопрограммам , обеспечивается путем расширения генераторов Python . [103] До версии 2.5 генераторы были ленивыми итераторами ; данные передавались из генератора однонаправленно. Начиная с версии Python 2.5, можно передавать данные обратно в функцию генератора; а с версии 3.3 их можно передавать через несколько уровней стека. [104]
Операторы +, -, и *для математического сложения, вычитания и умножения похожи на другие языки, но поведение деления отличается. В Python есть два типа деления: деление до нижнего предела (или целочисленное деление) и деление //с плавающей точкой . [105] Python использует оператор для возведения в степень./**
Python использует +оператор для конкатенации строк. Python использует *оператор для дублирования строки указанное количество раз.
Инфиксный @оператор. Он предназначен для использования библиотеками, такими как NumPy, для умножения матриц . [106] [107]
Синтаксис :=, называемый «оператором моржа», был введен в Python 3.8. Он присваивает значения переменным как части более крупного выражения. [108]
В Python ==сравнивает по значению. Оператор Python isможет использоваться для сравнения идентификаторов объектов (сравнение по ссылке), а сравнения могут быть связаны, например, .a<=b<=c
В Python в качестве булевых операторов используются and, orи .not
В Python есть тип выражения, называемый списковым выражением , и более общее выражение, называемое выражением - генератором . [80]
Условные выражения записываются как [109] (отличаются порядком операндов от оператора, распространенного во многих других языках).xifcelseyc ? x : y
Python различает списки и кортежи . Списки записываются как , являются изменяемыми и не могут использоваться в качестве ключей словарей (ключи словарей должны быть неизменяемыми в Python). Кортежи, записанные как , являются неизменяемыми и, таким образом, могут использоваться в качестве ключей словарей, при условии, что все элементы кортежа являются неизменяемыми. Оператор может использоваться для конкатенации двух кортежей, что не изменяет их содержимое напрямую, но создает новый кортеж, содержащий элементы обоих. Таким образом, если переменная изначально равна , выполнение сначала вычисляет , что дает , который затем присваивается обратно — тем самым эффективно «изменяя содержимое» , при этом соответствуя неизменяемой природе объектов кортежа. Скобки необязательны для кортежей в недвусмысленных контекстах. [110][1,2,3](1,2,3)+t(1,2,3)t=t+(4,5)t+(4,5)(1,2,3,4,5)tt
Python имеет функцию последовательной распаковки , где несколько выражений, каждое из которых вычисляется для чего-либо, что может быть назначено (переменной, записываемому свойству и т. д.), связаны идентичным образом с тем, что формирует литералы кортежа, и, как целое, помещаются с левой стороны знака равенства в операторе присваивания. Оператор ожидает итерируемый объект с правой стороны знака равенства, который производит то же количество значений, что и предоставленные записываемые выражения; при итерации по ним он назначает каждое из произведенных значений соответствующему выражению слева. [111]
В Python есть оператор «формата строки» %, который функционирует аналогично printfформатированию строк в C, например, вычисляется как . В Python 2.6+ и 3+ это было дополнено методом класса , например . В Python 3.6 добавлены «f-строки»: . [112]"spam=%s eggs=%d"%("blah",2)"spam=blah eggs=2"format()str"spam={0} eggs={1}".format("blah",2)spam="blah";eggs=2;f'spam={spam} eggs={eggs}'
Строки в Python можно объединять путем их «добавления» (с тем же оператором, что и для сложения целых чисел и чисел с плавающей точкой), например returns . Если строки содержат числа, они добавляются как строки, а не как целые числа, например returns ."spam"+"eggs""spameggs""2"+"2""22"
Разделяются одинарными или двойными кавычками; в отличие от оболочек Unix , Perl и языков, находящихся под влиянием Perl, одинарные и двойные кавычки работают одинаково. Оба используют обратную косую черту ( \) в качестве экранирующего символа . Интерполяция строк стала доступна в Python 3.6 как «форматированные строковые литералы». [112]
Тройные кавычки (начинаются и заканчиваются тремя одинарными или двойными кавычками), которые могут охватывать несколько строк и функционировать как документы в оболочках, Perl и Ruby .
Разновидности необработанных строк , обозначаемые префиксом строкового литерала r. Escape-последовательности не интерпретируются; поэтому необработанные строки полезны там, где распространены литеральные обратные косые черты, например, в регулярных выражениях и путях в стиле Windows@ . (Сравните « -quoting» в C# .)
В Python есть индекс массива и выражения среза массиваa[key] в списках, обозначаемые как , или . Индексы отсчитываются от нуля , а отрицательные индексы относительны к концу. Срезы берут элементы от начального индекса до конечного индекса , но не включая его . Третий параметр среза, называемый step или stride , позволяет пропускать элементы и изменять их порядок. Индексы среза можно опускать — например, возвращает копию всего списка. Каждый элемент среза является поверхностной копией .a[start:stop]a[start:stop:step]a[:]
В Python различие между выражениями и операторами жестко соблюдается, в отличие от таких языков, как Common Lisp , Scheme или Ruby . Это приводит к дублированию некоторых функций. Например:
eval()Встроенные функции exec()(в Python 2 — execэто оператор); первый — для выражений, второй — для операторов
Операторы не могут быть частью выражения, поэтому список и другие включения или лямбда-выражения , все являющиеся выражениями, не могут содержать операторы. Частным случаем является то, что оператор присваивания, такой как , не может быть частью условного выражения условного оператора.a=1
Методы
Методы объектов — это функции , прикрепленные к классу объекта; синтаксис для обычных методов и функций — синтаксический сахар для . Методы Python имеют явный параметр для доступа к данным экземпляра , в отличие от неявного self (или ) в некоторых других объектно-ориентированных языках программирования (например, C++ , Java , Objective-C , Ruby ). [113] Python также предоставляет методы, часто называемые методами dunder (из-за их имен, начинающихся и заканчивающихся двойным подчеркиванием), чтобы позволить определяемым пользователем классам изменять то, как они обрабатываются собственными операциями, включая длину, сравнение, арифметические операции и преобразование типов. [114]instance.method(argument)Class.method(instance,argument)selfthis
Печатание
Python использует утиную типизацию и имеет типизированные объекты, но нетипизированные имена переменных. Ограничения типов не проверяются во время компиляции ; вместо этого операции над объектом могут завершиться неудачей, что означает, что он не имеет подходящего типа. Несмотря на динамическую типизацию , Python строго типизирован , запрещая операции, которые не определены должным образом (например, добавление числа к строке), а не молча пытаясь понять их смысл.
Python позволяет программистам определять собственные типы с помощью классов , которые чаще всего используются для объектно-ориентированного программирования . Новые экземпляры классов создаются путем вызова класса (например, или ), а классы являются экземплярами метакласса ( который сам является экземпляром самого себя), что позволяет осуществлять метапрограммирование и рефлексию .SpamClass()EggsClass()type
До версии 3.0 в Python было два вида классов (оба использовали один и тот же синтаксис): старый стиль и новый стиль ; [115] текущие версии Python поддерживают только семантику нового стиля.
Python поддерживает необязательные аннотации типов . [4] [116] Эти аннотации не являются обязательными для языка, но могут использоваться внешними инструментами, такими как mypy, для обнаружения ошибок. [117] [118] Mypy также поддерживает компилятор Python, называемый mypyc, который использует аннотации типов для оптимизации. [119]
Арифметические операции
В Python есть обычные символы для арифметических операторов ( +, -, *, /), оператор деления с точностью до 0 //и операция по модулю% (где остаток может быть отрицательным, например 4 % -3 == -2). Также есть **для возведения в степень , например 5**3 == 125и 9**0.5 == 3.0, и оператор умножения матриц @. [123] Эти операторы работают как в традиционной математике; с теми же правилами приоритета , операторы инфиксные ( +и -также могут быть унарными для представления положительных и отрицательных чисел соответственно).
Деление целых чисел дает результаты с плавающей точкой. Поведение деления значительно изменилось с течением времени: [124]
Текущий Python (начиная с версии 3.0) изменился так /, чтобы всегда использовать деление с плавающей точкой, например .5/2==2.5
//Был введен оператор деления на квадрат . Таким образом 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0и -7.5//3 == -3.0. Добавление заставляет модуль, используемый в Python 2.7, использовать правила Python 3.0 для деления (см. выше).from__future__importdivision
В терминах Python — /это истинное деление (или просто деление ), а //— деление с точностью до квадрата./ До версии 3.0 — это классическое деление . [124]
Округление в сторону отрицательной бесконечности, хотя и отличается от большинства языков, добавляет согласованности. Например, это означает, что уравнение всегда верно. Это также означает, что уравнение справедливо как для положительных, так и для отрицательных значений . Однако сохранение справедливости этого уравнения означает, что хотя результат находится, как и ожидалось, в полуоткрытом интервале [0, b ), где — положительное целое число, он должен лежать в интервале ( b , 0], когда — отрицательное. [125](a+b)//b==a//b+1b*(a//b)+a%b==aaa%bbb
Python предоставляет roundфункцию для округления числа с плавающей точкой до ближайшего целого числа. Для разрешения ничьей Python 3 использует round to even : round(1.5)и round(2.5)обе версии производят 2. [126] Версии до 3 использовали round-away-from-zero : round(0.5)is 1.0, round(-0.5)is −1.0. [127]
Python допускает булевы выражения с множественными отношениями равенства способом, соответствующим общему использованию в математике. Например, выражение a < b < cпроверяет, aменьше ли bи bменьше ли c. [128] Языки, производные от C, интерпретируют это выражение по-разному: в C выражение сначала оценивает a < b, давая 0 или 1, а затем этот результат сравнивается с c. [129]
Python использует арифметику произвольной точности для всех целочисленных операций. DecimalТип/класс в decimalмодуле предоставляет десятичные числа с плавающей точкой с предопределенной произвольной точностью и несколькими режимами округления. [130] Класс Fractionв fractionsмодуле предоставляет произвольную точность для рациональных чисел . [131]
Благодаря обширной математической библиотеке Python и сторонней библиотеке NumPy , которая еще больше расширяет собственные возможности, он часто используется в качестве научного языка сценариев для решения таких задач, как обработка и манипулирование числовыми данными. [132] [133]
Программа для вычисления факториала положительного целого числа:
n = int ( input ( 'Введите число, и его факториал будет напечатан: ' ))если n < 0 :raise ValueError ( 'Вы должны ввести неотрицательное целое число' )факториал = 1для i в диапазоне ( 2 , n + 1 ):факториал *= iпечать ( факториал )
Некоторые части стандартной библиотеки охватываются спецификациями, например, реализация интерфейса шлюза веб-сервера (WSGI) wsgirefследует PEP 333 [135] , но большинство из них определены их кодом, внутренней документацией и тестовыми наборами . Однако, поскольку большая часть стандартной библиотеки представляет собой кроссплатформенный код Python, для реализации вариантов требуется изменить или переписать лишь несколько модулей.
По состоянию на 17 марта 2024 года [обновлять]Python Package Index (PyPI), официальный репозиторий стороннего программного обеспечения Python, содержит более 523 000 [136] пакетов с широким спектром функциональных возможностей, включая:
Большинство реализаций Python (включая CPython) включают цикл «чтение-вычисление-печать» (REPL), что позволяет им функционировать как интерпретатор командной строки , в котором пользователи последовательно вводят операторы и немедленно получают результаты.
Другие оболочки, включая IDLE и IPython , добавляют дополнительные возможности, такие как улучшенное автодополнение, сохранение состояния сеанса и подсветка синтаксиса .
CPython — это эталонная реализация Python. Она написана на языке C, соответствующем стандарту C89 (Python 3.11 использует C11 [138] ) с несколькими избранными функциями C99 . CPython включает собственные расширения C, но сторонние расширения не ограничиваются старыми версиями C — например, они могут быть реализованы с помощью C11 или C++. [139] [140] CPython компилирует программы Python в промежуточный байт-код [141], который затем выполняется его виртуальной машиной . [142] CPython распространяется с большой стандартной библиотекой, написанной на смеси C и собственного Python, и доступен для многих платформ, включая Windows (начиная с Python 3.9, установщик Python намеренно не устанавливает его на Windows 7 и 8; [143] [144] Windows XP поддерживалась до Python 3.5) и большинство современных Unix-подобных систем, включая macOS (и Apple M1 Mac, начиная с Python 3.9.1, с экспериментальным установщиком), с неофициальной поддержкой VMS . [145] Переносимость платформы была одним из его самых ранних приоритетов. [146] (Во время разработки Python 1 и 2 поддерживались даже OS/2 и Solaris , [147] но с тех пор поддержка была прекращена для многих платформ.)
Все текущие версии Python (начиная с 3.7) поддерживают только операционные системы с поддержкой многопоточности.
Другие реализации
Все альтернативные реализации имеют, по крайней мере, немного отличающуюся семантику (например, могут иметь неупорядоченные словари, в отличие от всех текущих версий Python), например, с более крупной экосистемой Python, такой как поддержка API C Python с PyPy:
PyPy — быстрый и совместимый интерпретатор Python 2.7 и 3.10. [148] [149] Его компилятор just-in-time часто обеспечивает значительное улучшение скорости по сравнению с CPython, но некоторые библиотеки, написанные на языке C, не могут быть использованы с ним. [150] Он, например, поддерживает RISC-V .
Codon — это язык с компилятором ahead-of-time (AOT) , который (AOT) компилирует статически типизированный Python-подобный язык с «синтаксисом и семантикой, почти идентичными Python, есть некоторые заметные различия» [151], например, он использует 64-битные машинные целые числа для скорости, а не произвольные, как Python, и утверждает, что ускорение по сравнению с CPython обычно составляет порядка 10–100 раз. Он компилируется в машинный код (через LLVM ) и поддерживает собственную многопоточность. [152] Codon также может компилировать в модули расширения Python, которые можно импортировать и использовать из Python.
Stackless Python — это важный форк CPython, реализующий микропотоки ; он не использует стек вызовов таким же образом, что позволяет выполнять многопоточные программы. PyPy также имеет версию без стека. [153]
Snek [157] [158] [159] Встраиваемый вычислительный язык (совместимый, например, с 8-битными микроконтроллерами AVR , такими как Arduino на базе ATmega 328P , а также с более крупными, совместимыми с MicroPython ) «вдохновлен Python, но это не Python. Можно писать программы Snek, которые работают под полной системой Python, но большинство программ Python не будут работать под Snek». [160] Это императивный язык, не включающий ООП / классы, в отличие от Python, и упрощающий до одного числового типа с 32-битной одинарной точностью (похож на JavaScript , только меньше).
Реализации больше не поддерживаются
Были разработаны и другие JIT-компиляторы Python, но в настоящее время они не поддерживаются:
В 2009 году Google начал проект под названием Unladen Swallow с целью ускорения интерпретатора Python в пять раз за счет использования LLVM и улучшения его многопоточной способности для масштабирования до тысяч ядер [161] , в то время как обычные реализации страдают от глобальной блокировки интерпретатора .
Psyco — это прекращенный специализированный компилятор just-in-time , который интегрируется с CPython и преобразует байт-код в машинный код во время выполнения. Выдаваемый код специализирован для определенных типов данных и быстрее стандартного кода Python. Psyco не поддерживает Python 2.7 или более поздние версии.
PyS60 был интерпретатором Python 2 для мобильных телефонов Series 60 , выпущенным Nokia в 2005 году. Он реализовал многие модули из стандартной библиотеки и некоторые дополнительные модули для интеграции с операционной системой Symbian . Nokia N900 также поддерживает Python с библиотеками виджетов GTK , что позволяет писать и запускать программы на целевом устройстве. [162]
Кросс-компиляторы на другие языки
Существует несколько компиляторов/ транспиляторов для объектных языков высокого уровня, в которых в качестве исходного языка используется либо неограниченный Python, либо ограниченное подмножество Python, либо язык, похожий на Python:
Brython, [163] Transcrypt [164] [165] и Pyjs (последний выпуск в 2012 году) компилируют Python в JavaScript .
Cython компилирует (надмножество) Python в C. Полученный код также можно использовать с Python посредством прямых вызовов API уровня C в интерпретатор Python.
PyJL компилирует/транспилирует подмножество Python в «человекочитаемый, поддерживаемый и высокопроизводительный исходный код Julia». [90] Несмотря на заявления о высокой производительности, ни один инструмент не может претендовать на это для произвольного кода Python; т. е. известно, что невозможно скомпилировать в более быстрый язык или машинный код. Если только не будет изменена семантика Python, но во многих случаях ускорение возможно с небольшими изменениями или без них в коде Python. Более быстрый исходный код Julia затем может быть использован из Python или скомпилирован в машинный код и базироваться на этом.
Nuitka компилирует Python в C. [166] Он работает с Python 3.4 по 3.12 (и 2.6 и 2.7), для основных поддерживаемых платформ Python (и Windows 7 или даже Windows XP) и для Android. Он заявляет о полной поддержке Python 3.10, некоторой поддержке 3.11 и 3.12 и экспериментальной поддержке Python 3.13. Он поддерживает macOS, включая основанные на Apple Silicon. Это бесплатный компилятор, хотя у него также есть коммерческие дополнения (например, для сокрытия исходного кода).
Numba используется в Python как инструмент (активируемый путем добавления декоратора к соответствующему коду Python), JIT-компилятор, который транслирует подмножество кода Python и NumPy в быстрый машинный код.
Pythran компилирует подмножество Python 3 в C++ ( C++11 ). [167]
RPython можно скомпилировать в C, и он используется для создания интерпретатора PyPy языка Python.
Транспилятор Python → 11l → C++ [168] компилирует подмножество Python 3 в C++ ( C++17 ).
Старые проекты (или не предназначенные для использования с Python 3.x и последним синтаксисом):
Grumpy от Google (последний релиз в 2017 году) транспилирует Python 2 в Go . [169] [170] [171]
IronPython позволяет запускать программы Python 2.7 (альфа - версия , выпущенная в 2021 году, также доступна для «Python 3.4, хотя функции и поведение из более поздних версий могут быть включены» [172] ) в среде выполнения Common Language Runtime .NET . [173]
Jython компилирует Python 2.7 в байт-код Java, позволяя использовать библиотеки Java из программы Python. [174]
Pyrex (последний выпуск в 2010 году) и Shed Skin (последний выпуск в 2013 году) компилируются в C и C++ соответственно.
Производительность
Сравнение производительности различных реализаций Python на нечисловой (комбинаторной) рабочей нагрузке было представлено на EuroSciPy '13. [175] Производительность Python по сравнению с другими языками программирования также измеряется The Computer Language Benchmarks Game . [176]
Разработка
Разработка Python в основном ведется с помощью процесса Python Enhancement Proposal (PEP), основного механизма для предложения новых важных функций, сбора мнений сообщества по проблемам и документирования решений по проектированию Python. [177] Стиль кодирования Python рассматривается в PEP 8. [178] Выдающиеся PEP рассматриваются и комментируются сообществом Python и руководящим советом. [177]
Улучшение языка соответствует разработке эталонной реализации CPython. Список рассылки python-dev является основным форумом для разработки языка. Конкретные проблемы изначально обсуждались в трекере ошибок Roundup, размещенном на . [179] В 2022 году все проблемы и обсуждения были перенесены на GitHub . [180] Первоначально разработка велась в репозитории исходного кода, размещенном на собственном хостинге , работающем на Mercurial , пока Python не переехал на GitHub в январе 2017 года. [181]
Публичные релизы CPython бывают трех типов, которые различаются по тому, какая часть номера версии увеличивается:
Версии с обратной совместимостью, где код, как ожидается, сломается и должен быть вручную перенесен . Первая часть номера версии увеличивается. Эти релизы случаются нечасто — версия 3.0 была выпущена через 8 лет после 2.0. По словам Гвидо ван Россума, версия 4.0 вряд ли когда-либо появится. [182]
Основные или «функциональные» релизы в основном совместимы с предыдущей версией, но вводят новые функции. Вторая часть номера версии увеличивается. Начиная с Python 3.9, эти релизы, как ожидается, будут происходить ежегодно. [183] [184] Каждая основная версия поддерживается исправлениями ошибок в течение нескольких лет после ее выпуска. [185]
Выпуски исправлений ошибок [186] , которые не вводят никаких новых функций, происходят примерно каждые 3 месяца и производятся, когда достаточное количество ошибок было исправлено в восходящем направлении с момента последнего выпуска. Уязвимости безопасности также исправляются в этих выпусках. Третья и последняя часть номера версии увеличивается. [186]
Многие альфа, бета и релиз-кандидаты также выпускаются в качестве предварительных версий и для тестирования перед окончательными релизами. Хотя для каждого релиза существует приблизительный график, они часто задерживаются, если код не готов. Команда разработчиков Python отслеживает состояние кода, запуская большой набор модульных тестов во время разработки. [187]
Python 3.12 удален, что означает необходимость модификации wstrрасширений Python [188] , [189] а 3.10 добавил сопоставление с образцом в язык. [190]
Python 3.12 удалил некоторые устаревшие модули, и в будущем их будет больше, устарело с 3.13; уже устаревший код формата массива 'u' будет выдаваться DeprecationWarningс 3.13 и будет удален в Python 3.16. Вместо этого следует использовать код формата 'w'. Часть ctypes также устарела и http.server.CGIHTTPRequestHandlerбудет выдавать DeprecationWarning и будет удалена в 3.15. Использование этого кода уже имеет высокий потенциал для ошибок как безопасности, так и функциональности. Части модуля типизации устарели, например, создание typing.NamedTupleкласса с использованием ключевых аргументов для обозначения полей и т. д. (и многое другое) будет запрещено в Python 3.15.
Генераторы документации API
Инструменты, которые могут генерировать документацию для Python API, включают pydoc (доступный как часть стандартной библиотеки), Sphinx , Pdoc и его ответвления, Doxygen и Graphviz , среди прочих. [191]
Нейминг
Название Python происходит от британской комедийной группы Monty Python , которую создатель Python Гвидо ван Россум любил во время разработки языка. Ссылки на Monty Python часто встречаются в коде и культуре Python; [192] например, метасинтаксические переменные, часто используемые в литературе Python, — это spam и eggs вместо традиционных foo и bar . [192] [193] Официальная документация Python также содержит различные ссылки на процедуры Monty Python. [194] [195] Пользователей Python иногда называют «питонистами». [196]
Префикс Py- используется для указания того, что что-то связано с Python. Примерами использования этого префикса в названиях приложений или библиотек Python являются Pygame , привязка Simple DirectMedia Layer к Python (обычно используется для создания игр); PyQt и PyGTK , которые привязывают Qt и GTK к Python соответственно; и PyPy , реализация Python, изначально написанная на Python.
Популярность
С 2003 года Python неизменно входит в десятку самых популярных языков программирования в индексе сообщества программирования TIOBE , где по состоянию на декабрь 2022 года [обновлять]он был самым популярным языком (опередив C, C++ и Java ). [39] Он был выбран языком программирования года (за «самый высокий рост рейтингов за год») в 2007, 2010, 2018 и 2020 годах (единственный язык, который сделал это четыре раза по состоянию на 2020 год [197] ).[обновлять]
Крупные организации, использующие Python, включают Wikipedia , Google , [198] Yahoo !, [199] CERN , [200] NASA , [201] Facebook , [202] Amazon , Instagram , [203] Spotify , [204] и некоторые более мелкие организации, такие как Industrial Light & Magic [205] и ITA . [206] Сайт социальных новостей Reddit был написан в основном на Python. [207] Организации, частично использующие Python, включают Discord [208] и Baidu . [209]
Сочетание Python и Prolog оказалось особенно полезным для приложений ИИ, причем Prolog обеспечивает возможности представления знаний и рассуждений. В частности, система Janus использует сходства между этими двумя языками, отчасти из-за использования ими динамической типизации и простой рекурсивной природы их структур данных. Типичные приложения этой комбинации включают обработку естественного языка, визуальные ответы на запросы, геопространственное рассуждение и обработку семантических веб-данных. [221] [222]
Система Natlog, реализованная на Python, использует грамматики определенных предложений (DCG) в качестве генераторов подсказок для генераторов текста в текст, таких как GPT3, и генераторов текста в изображение, таких как DALL-E или Stable Diffusion. [223]
LibreOffice включает Python и намеревается заменить Java на Python. Его Python Scripting Provider является основной функцией [236] с версии 4.0 от 7 февраля 2013 года.
Языки, на которые повлиял Python
Дизайн и философия Python оказали влияние на многие другие языки программирования:
Boo использует отступы, похожий синтаксис и похожую объектную модель. [237]
Cobra использует отступы и похожий синтаксис, а в документе «Благодарности» Python указан первым среди языков, оказавших на него влияние. [238]
CoffeeScript — язык программирования, кросс-компилирующийся в JavaScript, имеет синтаксис, вдохновленный Python.
GDScript — язык сценариев, очень похожий на Python, встроенный в игровой движок Godot . [240]
Go разработан для «скорости работы в динамическом языке, таком как Python» [241] и использует тот же синтаксис для нарезки массивов.
Groovy был мотивирован желанием перенести философию дизайна Python на Java . [242]
Julia была разработана так, чтобы быть «столь же пригодной для общего программирования, как и Python». [27]
Mojo — это нестрогое [28] [243] надмножество Python (например, все еще отсутствуют классы и добавлены, например, struct ). [244]
Nim использует отступы и похожий синтаксис. [245]
Создатель Ruby , Юкихиро Мацумото , сказал: «Я хотел скриптовый язык, который был бы более мощным, чем Perl, и более объектно-ориентированным, чем Python. Вот почему я решил разработать свой собственный язык». [246]
Swift , язык программирования, разработанный Apple, имеет синтаксис, отчасти схожий с синтаксисом Python. [247]
Kotlin сочетает в себе возможности Python и Java, минимизируя шаблонный код для повышения эффективности разработки. [248]
Практики разработки Python также были переняты другими языками. Например, практика требования документа, описывающего обоснование и проблемы, связанные с изменением языка (в Python это PEP), также используется в Tcl , [249] Erlang , [250] и Swift. [251]
^ "General Python FAQ – Документация Python 3". docs.python.org . Получено 7 июля 2024 г. .
^ "Python 0.9.1 часть 01/21". Архив alt.sources. Архивировано из оригинала 11 августа 2021 г. Получено 11 августа 2021 г.
^ "Почему Python является динамическим языком, а также строго типизированным языком". Python Wiki . Архивировано из оригинала 14 марта 2021 г. Получено 27 января 2021 г.
^ ab "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 г.
^ "Starlark Language". Архивировано из оригинала 15 июня 2020 года . Получено 25 мая 2019 года .
^ ab "Why was Python created in first place?". General Python FAQ . Python Software Foundation. Архивировано из оригинала 24 октября 2012 г. Получено 22 марта 2007 г. У меня был большой опыт внедрения интерпретируемого языка в группе ABC в CWI, и работая с этой группой, я многому научился о проектировании языка. Это источник многих возможностей Python, включая использование отступов для группировки операторов и включение очень высокоуровневых типов данных (хотя детали в Python все другие).
^ "Ada 83 Reference Manual (raise statement)". Архивировано из оригинала 22 октября 2019 г. Получено 7 января 2020 г.
^ ab Kuchling, Andrew M. (22 декабря 2006 г.). "Интервью с Гвидо ван Россумом (июль 1998 г.)". amk.ca . Архивировано из оригинала 1 мая 2007 г. . Получено 12 марта 2012 г. . Я провел лето в Центре системных исследований DEC, который познакомил меня с Modula-2+; окончательный отчет по Modula-3 писался там примерно в то же время. То, чему я там научился, позже проявилось в обработке исключений Python, модулях и том факте, что методы явно содержат 'self' в своем списке параметров. Нарезка строк пришла из Algol-68 и Icon.
^ abc "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 значительно.
^ ab "Классы". Учебник Python . Python Software Foundation. Архивировано из оригинала 23 октября 2012 г. Получено 20 февраля 2012 г. Это смесь механизмов классов, найденных в C++ и Modula-3
^ Lundh, Fredrik. «Call By Object». effbot.org . Архивировано из оригинала 23 ноября 2019 г. . Получено 21 ноября 2017 г. . замените «CLU» на «Python», «record» на «instance», а «procedure» на «function or method», и вы получите довольно точное описание объектной модели Python.
^ Simionato, Michele. "The Python 2.3 Method Resolution Order". Python Software Foundation. Архивировано из оригинала 20 августа 2020 г. Получено 29 июля 2014 г. Сам метод C3 не имеет ничего общего с Python, поскольку он был изобретен людьми, работавшими над Dylan, и описан в статье, предназначенной для lispers.
^ Kuchling, AM "Functional Programming HOWTO". Документация Python v2.7.2 . Python Software Foundation. Архивировано из оригинала 24 октября 2012 г. Получено 9 февраля 2012 г. Списковые включения и выражения-генераторы [...] — это краткая нотация для таких операций, заимствованная из функционального языка программирования Haskell.
^ Шеменауэр, Нил; Питерс, Тим; Хетланд, Магнус Ли (18 мая 2001 г.). «PEP 255 – Простые генераторы». Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 5 июня 2020 г. . Получено 9 февраля 2012 г. .
^ "More Control Flow Tools". Документация Python 3. Python Software Foundation. Архивировано из оригинала 4 июня 2016 г. Получено 24 июля 2015 г. По многочисленным просьбам в Python были добавлены несколько функций, обычно встречающихся в функциональных языках программирования, таких как Lisp. С помощью ключевого слова lambda можно создавать небольшие анонимные функции.
^ "re – Операции с регулярными выражениями – Документация Python 3.10.6". docs.python.org . Архивировано из оригинала 18 июля 2018 г. . Получено 6 сентября 2022 г. Этот модуль предоставляет операции сопоставления регулярных выражений, аналогичные тем, что встречаются в Perl.
^ "CoffeeScript". coffeescript.org . Архивировано из оригинала 12 июня 2020 . Получено 3 июля 2018 .
^ "Perl и Python влияют на JavaScript". www.2ality.com . 24 февраля 2013 г. Архивировано из оригинала 26 декабря 2018 г. Получено 15 мая 2015 г.
^ Раушмайер, Аксель. "Глава 3: Природа JavaScript; Влияния". O'Reilly, Speaking JavaScript . Архивировано из оригинала 26 декабря 2018 года . Получено 15 мая 2015 года .
^ ab "Почему мы создали Julia". Сайт Julia . Февраль 2012 г. Архивировано из оригинала 2 мая 2020 г. Получено 5 июня 2014 г. Мы хотим что-то столь же пригодное для общего программирования, как Python [...]
^ ab Krill, Paul (4 мая 2023 г.). «Mojo language maries Python and MLIR for AI development» (Язык Mojo объединяет Python и MLIR для разработки ИИ). InfoWorld . Архивировано из оригинала 5 мая 2023 г. Получено 5 мая 2023 г.
^ Ring Team (4 декабря 2017 г.). «Ring и другие языки». ring-lang.net . ring-lang. Архивировано из оригинала 25 декабря 2018 г. Получено 4 декабря 2017 г.
^ Бини, Ола (2007). Практические проекты JRuby on Rails Web 2.0: перенос Ruby on Rails на платформу Java . Беркли: APress. С. 3. ISBN978-1-59059-881-8.
^ Lattner, Chris (3 июня 2014 г.). "Домашняя страница Криса Латтнера". Крис Латтнер. Архивировано из оригинала 25 декабря 2018 г. . Получено 3 июня 2014 г. Язык Swift является продуктом неустанных усилий команды экспертов по языку, гуру документации, ниндзя оптимизации компиляторов и невероятно важной внутренней группы по догфудингу, которые предоставляли обратную связь, чтобы помочь доработать и проверить идеи в бою. Конечно, он также значительно выиграл от опыта, полученного с трудом многими другими языками в этой области, черпая идеи из Objective-C, Rust, Haskell, Ruby, Python, C#, CLU и слишком многих других, чтобы перечислить их.
^ Кульман, Дэйв. "A Python Book: Beginning Python, Advanced Python, and Python Exercises". Раздел 1.1. Архивировано из оригинала (PDF) 23 июня 2012 г.
^ "About Python". Python Software Foundation. Архивировано из оригинала 20 апреля 2012 г. Получено 24 апреля 2012 г., второй раздел «Поклонники Python используют фразу «батарейки включены» для описания стандартной библиотеки, которая охватывает все: от асинхронной обработки до zip-файлов».
^ "PEP 206 – Python Advanced Library". Python.org . Архивировано из оригинала 5 мая 2021 г. . Получено 11 октября 2021 г. .
^ Россум, Гвидо Ван (20 января 2009 г.). «История Python: краткая хронология Python». История Python . Архивировано из оригинала 5 июня 2020 г. . Получено 5 марта 2021 г. .
^ Петерсон, Бенджамин (20 апреля 2020 г.). «Python 2.7.18, последний выпуск Python 2». Python Insider . Архивировано из оригинала 26 апреля 2020 г. Получено 27 апреля 2020 г.
^ "Stack Overflow Developer Survey 2022". Stack Overflow . Архивировано из оригинала 27 июня 2022 . Получено 12 августа 2022 .
^ "Инфографика состояния экосистемы разработчиков в 2020 году". JetBrains: инструменты разработчика для профессионалов и команд . Архивировано из оригинала 1 марта 2021 г. Получено 5 марта 2021 г.
^ ab "TIOBE Index". TIOBE. Архивировано из оригинала 25 февраля 2018 г. Получено 3 января 2023 г. Индекс сообщества программистов TIOBE является индикатором популярности языков программирования .Обновляется по мере необходимости.
^ "PYPL PopularitY of Programming Language index". pypl.github.io . Архивировано из оригинала 14 марта 2017 г. . Получено 26 марта 2021 г. .
^ ab Venners, Bill (13 января 2003 г.). "The Making of Python". Artima Developer . Artima. Архивировано из оригинала 1 сентября 2016 г. Получено 22 марта 2007 г.
^ Ван Россум, Гвидо (29 августа 2000 г.). "SETL (было: Lukewarm about range literals)". Python-Dev (список рассылки). Архивировано из оригинала 14 июля 2018 г. Получено 13 марта 2011 г.
^ ван Россум, Гвидо (20 января 2009 г.). «Краткая хронология Python». История Python . Архивировано из оригинала 5 июня 2020 г. Получено 20 января 2009 г.
^ Fairchild, Carlie (12 июля 2018 г.). «Guido van Rossum Stepping Down from Role as Python’s Benevolent Dictator For Life». Linux Journal . Архивировано из оригинала 13 июля 2018 г. Получено 13 июля 2018 г.
^ "PEP 8100". Python Software Foundation. Архивировано из оригинала 4 июня 2020 г. Получено 4 мая 2019 г.
^ "PEP 13 – Python Language Governance". Python.org . Архивировано из оригинала 27 мая 2021 г. . Получено 25 августа 2021 г. .
^ Kuchling, AM; Zadka, Moshe (16 октября 2000 г.). «Что нового в Python 2.0». Python Software Foundation. Архивировано из оригинала 23 октября 2012 г. Получено 11 февраля 2012 г.
^ Ван Россум, Гвидо (5 апреля 2006 г.). «PEP 3000 – Python 3000». Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 3 марта 2016 г. Получено 27 июня 2009 г.
^ "2to3 – Автоматизированный перевод кода Python 2 в 3". docs.python.org . Архивировано из оригинала 4 июня 2020 г. . Получено 2 февраля 2021 г. .
^ "PEP 373 – Python 2.7 Release Schedule". python.org . Архивировано из оригинала 19 мая 2020 г. Получено 9 января 2017 г.
^ "PEP 466 – Network Security Enhancements for Python 2.7.x". python.org . Архивировано из оригинала 4 июня 2020 г. . Получено 9 января 2017 г. .
^ "Sunsetting Python 2". Python.org . Архивировано из оригинала 12 января 2020 . Получено 22 сентября 2019 .
^ "PEP 373 – Python 2.7 Release Schedule". Python.org . Архивировано из оригинала 13 января 2020 г. . Получено 22 сентября 2019 г. .
^ "Python Release 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 Customer Portal . Архивировано из оригинала 6 марта 2021 г. Получено 26 февраля 2021 г.
^ "CVE-2021-3177". CVE . Архивировано из оригинала 27 февраля 2021 г. . Получено 26 февраля 2021 г. .
^ "CVE-2021-23336". CVE . Архивировано из оригинала 24 февраля 2021 г. . Получено 26 февраля 2021 г. .
^ Ланга, Лукаш (24 марта 2022 г.). «Python 3.10.4 и 3.9.12 теперь доступны вне графика». Python Insider . Архивировано из оригинала 21 апреля 2022 г. Получено 19 апреля 2022 г.
^ Ланга, Лукаш (16 марта 2022 г.). «Python 3.10.3, 3.9.11, 3.8.13 и 3.7.13 теперь доступны с содержимым безопасности». Python Insider . Архивировано из оригинала 17 апреля 2022 г. Получено 19 апреля 2022 г.
^ Ланга, Лукаш (17 мая 2022 г.). «Python 3.9.13 уже доступен». Python Insider . Архивировано из оригинала 17 мая 2022 г. Получено 21 мая 2022 г.
^ Ланга, Лукаш (7 сентября 2022 г.). «Python releases 3.10.7, 3.9.14, 3.8.14 и 3.7.14 теперь доступны». Python Insider . Архивировано из оригинала 13 сентября 2022 г. . Получено 16 сентября 2022 г. .
^ "CVE-2020-10735". CVE . Архивировано из оригинала 20 сентября 2022 . Получено 16 сентября 2022 .
^ «Встроенные типы».
^ corbet (24 октября 2022 г.). "Python 3.11 выпущен [LWN.net]". lwn.net . Получено 15 ноября 2022 г. .
^ "Что нового в Python 3.13". Документация Python . Получено 30 апреля 2024 г.
^ "PEP 667 – Согласованные представления пространств имен | peps.python.org". Предложения по улучшению Python (PEP) . Получено 7 октября 2024 г.
^ "Статус версий Python". Руководство разработчика Python . Получено 7 октября 2024 г.
^ Wouters, Thomas (9 апреля 2024 г.). "Python Insider: Python 3.12.3 и 3.13.0a6 выпущены". Python Insider . Получено 29 апреля 2024 г. .
^ "PEP 594 – Удаление разряженных батарей из стандартной библиотеки". Предложения по улучшению Python . Python Softtware Foundation. 20 мая 2019 г.
↑ Hugo (15 октября 2024 г.). "Python Insider: Python 3.14.0 alpha 1 уже доступен". Python Insider . Получено 16 октября 2024 г.
^ "PEP 649 – Отложенная оценка аннотаций с использованием дескрипторов | peps.python.org". Предложения по улучшению Python (PEP) . Получено 16 октября 2024 г.
^ The Cain Gang Ltd. "Python Metaclasses: Who? Why? When?" (PDF) . Архивировано из оригинала (PDF) 30 мая 2009 г. . Получено 27 июня 2009 г. .
^ "3.3. Специальные имена методов". Справочник по языку Python . Python Software Foundation. Архивировано из оригинала 15 декабря 2018 года . Получено 27 июня 2009 года .
^ "PyDBC: предварительные условия метода, постусловия метода и инварианты класса для Python". Архивировано из оригинала 23 ноября 2019 г. Получено 24 сентября 2011 г.
^ "Contracts for Python". Архивировано из оригинала 15 июня 2020 г. Получено 24 сентября 2011 г.
^ "PyDatalog". Архивировано из оригинала 13 июня 2020 г. Получено 22 июля 2012 г.
^ «Склеиваем все вместе с помощью Python». Python.org . Получено 30 сентября 2024 г. .
^ "Расширение и встраивание интерпретатора Python: подсчет ссылок". Docs.python.org. Архивировано из оригинала 18 октября 2012 г. Получено 5 июня 2020 г. Поскольку Python активно использует и , ему нужна стратегия для предотвращения утечек памяти, а также использования освобожденной памяти. Выбранный метод называется подсчетом ссылок .malloc()free()
^ ab Hettinger, Raymond (30 января 2002 г.). "PEP 289 – Generator Expressions". Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 14 июня 2020 г. Получено 19 февраля 2012 г.
^ "6.5 itertools – Функции, создающие итераторы для эффективного циклирования". Docs.python.org. Архивировано из оригинала 14 июня 2020 г. Получено 22 ноября 2016 г.
^ ab Peters, Tim (19 августа 2004 г.). "PEP 20 – The Zen of Python". Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 26 декабря 2018 г. Получено 24 ноября 2008 г.
^ Лутц, Марк (январь 2022 г.). «Python Changes 2014+». Изучаем Python . Архивировано из оригинала 15 марта 2024 г. Получено 25 февраля 2024 г.
^ "Путаница относительно правила в The Zen of Python". Справка по Python - Обсуждения на Python.org . 3 мая 2022 г. Архивировано из оригинала 25 февраля 2024 г. Получено 25 февраля 2024 г.
^ Ambi, Chetan (4 июля 2021 г.). «Самый противоречивый оператор Python Walrus». Python Simplified . Архивировано из оригинала 27 августа 2023 г. Получено 5 февраля 2024 г.
^ Грифски, Джереми (24 мая 2020 г.). «Противоречие вокруг оператора Walrus в Python». The Renegade Coder . Архивировано из оригинала 28 декабря 2023 г. Получено 25 февраля 2024 г.
^ Бадер, Дэн. "Python String Formatting Best Practices". Настоящий Python . Архивировано из оригинала 18 февраля 2024 г. Получено 25 февраля 2024 г.
^ Мартелли, Алекс; Равенскрофт, Анна; Эшер, Дэвид (2005). Python Cookbook, 2-е издание. O'Reilly Media . стр. 230. ISBN978-0-596-00797-3. Архивировано из оригинала 23 февраля 2020 . Получено 14 ноября 2015 .
^ "Python Culture". ebeab . 21 января 2014 г. Архивировано из оригинала 30 января 2014 г.
^ ab "Транспиляция Python в Julia с помощью PyJL" (PDF) . Архивировано (PDF) из оригинала 19 ноября 2023 г. . Получено 20 сентября 2023 г. . После ручного изменения одной строки кода путем указания необходимой информации о типе мы получили ускорение в 52,6 раза, сделав переведенный код Julia в 19,5 раза быстрее исходного кода Python.
^ "Почему он называется Python?". Общие часто задаваемые вопросы по Python . Docs.python.org. Архивировано из оригинала 24 октября 2012 г. Получено 3 января 2023 г.
^ "15 способов, которыми Python является мощной силой в Интернете". Архивировано из оригинала 11 мая 2019 года . Получено 3 июля 2018 года .
^ "pprint – Data pretty printer – Документация Python 3.11.0". docs.python.org . Архивировано из оригинала 22 января 2021 г. . Получено 5 ноября 2022 г. stuff =['spam', 'eggs', 'lumberjack', 'knights', 'ni']
^ "Code Style – The Hitchhiker's Guide to Python". docs.python-guide.org . Архивировано из оригинала 27 января 2021 г. . Получено 20 января 2021 г. .
^ "Является ли Python хорошим языком для начинающих программистов?". Общие часто задаваемые вопросы по Python . Python Software Foundation. Архивировано из оригинала 24 октября 2012 г. Получено 21 марта 2007 г.
^ "Мифы об отступах в Python". Secnetix.de. Архивировано из оригинала 18 февраля 2018 года . Получено 19 апреля 2011 года .
^ Гуттаг, Джон В. (12 августа 2016 г.). Введение в вычисления и программирование с использованием Python: с применением к пониманию данных . MIT Press. ISBN978-0-262-52962-4.
^ "PEP 8 – Style Guide for Python Code". Python.org . Архивировано из оригинала 17 апреля 2019 г. . Получено 26 марта 2019 г. .
^ "8. Ошибки и исключения – Документация Python 3.12.0a0". docs.python.org . Архивировано из оригинала 9 мая 2022 г. Получено 9 мая 2022 г.
^ "Highlights: Python 2.5". Python.org . Архивировано из оригинала 4 августа 2019 . Получено 20 марта 2018 .
^ ван Россум, Гвидо (22 апреля 2009 г.). «Устранение рекурсии хвоста». Neopythonic.blogspot.be. Архивировано из оригинала 19 мая 2018 г. Получено 3 декабря 2012 г.
^ ван Россум, Гвидо (9 февраля 2006 г.). «Проектирование языка — это не просто решение головоломок». Форумы Artima . Artima. Архивировано из оригинала 17 января 2020 г. Получено 21 марта 2007 г.
^ Ван Россум, Гвидо; Эби, Филлип Дж. (10 мая 2005 г.). «PEP 342 – Coroutines via Enhanced Generators». Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 29 мая 2020 г. . Получено 19 февраля 2012 г. .
^ "PEP 380". Python.org. Архивировано из оригинала 4 июня 2020 г. Получено 3 декабря 2012 г.
^ "division". python.org . Архивировано из оригинала 20 июля 2006 . Получено 30 июля 2014 .
^ "PEP 0465 – Специальный инфиксный оператор для умножения матриц". python.org . Архивировано из оригинала 4 июня 2020 г. . Получено 1 января 2016 г. .
^ "Python 3.5.1 Release and Changelog". python.org . Архивировано из оригинала 14 мая 2020 г. Получено 1 января 2016 г.
^ "Что нового в Python 3.8". Архивировано из оригинала 8 июня 2020 г. Получено 14 октября 2019 г.
^ Ван Россум, Гвидо; Хеттингер, Рэймонд (7 февраля 2003 г.). «PEP 308 – Условные выражения». Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 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 г. .
^ ab "PEP 498 – Literal String Interpolation". python.org . Архивировано из оригинала 15 июня 2020 г. . Получено 8 марта 2017 г. .
^ "Почему 'self' должно использоваться явно в определениях и вызовах методов?". FAQ по дизайну и истории . Python Software Foundation. Архивировано из оригинала 24 октября 2012 г. Получено 19 февраля 2012 г.
^ Свейгарт, Эл (2020). Помимо базовых вещей с Python: лучшие практики написания чистого кода. No Starch Press. стр. 322. ISBN978-1-59327-966-0. Архивировано из оригинала 13 августа 2021 г. . Получено 7 июля 2021 г. .
^ "Справочник по языку Python, раздел 3.3. Классы нового стиля и классические, для версии 2.7.1". Архивировано из оригинала 26 октября 2012 г. Получено 12 января 2011 г.
^ "PEP 484 – Type Hints | peps.python.org". peps.python.org . Архивировано из оригинала 27 ноября 2023 г. . Получено 29 ноября 2023 г. .
^ "typing — Support for type hints". Документация Python . Python Software Foundation. Архивировано из оригинала 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 Software Foundation. Архивировано из оригинала 28 мая 2020 г. . Получено 24 сентября 2011 г. .
^ "Built-in Types". Архивировано из оригинала 14 июня 2020 года . Получено 3 октября 2019 года .
^ "PEP 465 – Специальный инфиксный оператор для умножения матриц". python.org . Архивировано из оригинала 29 мая 2020 г. Получено 3 июля 2018 г.
^ ab Zadka, Moshe; van Rossum, Guido (11 марта 2001 г.). "PEP 238 – Изменение оператора деления". Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 28 мая 2020 г. Получено 23 октября 2013 г.
^ "Why Python's Integer Division Floors". 24 августа 2010 г. Архивировано из оригинала 5 июня 2020 г. Получено 25 августа 2010 г.
^ "round", Стандартная библиотека Python, выпуск 3.2, §2: Встроенные функции , заархивировано из оригинала 25 октября 2012 г. , извлечено 14 августа 2011 г.
^ "round", Стандартная библиотека Python, выпуск 2.7, §2: Встроенные функции , заархивировано из оригинала 27 октября 2012 г. , извлечено 14 августа 2011 г.
^ Beazley, David M. (2009). Python Essential Reference (4-е изд.). Addison-Wesley Professional. стр. 66. ISBN9780672329784.
^ Керниган, Брайан В.; Ритчи, Деннис М. (1988). Язык программирования C (2-е изд.). стр. 206.
^ ab Batista, Facundo (17 октября 2003 г.). "PEP 327 – Decimal Data Type". Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 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 г. .
^ Piotrowski, Przemyslaw (июль 2006 г.). «Создание среды быстрой веб-разработки для серверных страниц Python и Oracle». Oracle Technology Network . Oracle. Архивировано из оригинала 2 апреля 2019 г. Получено 12 марта 2012 г.
^ Эби, Филлип Дж. (7 декабря 2003 г.). «PEP 333 – Python Web Server Gateway Interface v1.0». Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 14 июня 2020 г. . Получено 19 февраля 2012 г. .
^ "PyPI". PyPI . 17 марта 2024 г. Архивировано из оригинала 17 марта 2024 г.
^ Enthought, Canopy. "Canopy". www.enthought.com . Архивировано из оригинала 15 июля 2017 года . Получено 20 августа 2016 года .
^ "PEP 7 – Руководство по стилю для кода на языке C | peps.python.org". peps.python.org . Архивировано из оригинала 24 апреля 2022 г. . Получено 28 апреля 2022 г. .
^ "4. Building C and C++ Extensions – Python 3.9.2 documentation". docs.python.org . Архивировано из оригинала 3 марта 2021 г. . Получено 1 марта 2021 г. .
^ ван Россум, Гвидо (5 июня 2001 г.). «PEP 7 – Руководство по стилю для кода на языке C». Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 1 июня 2020 г. Получено 24 ноября 2008 г.
^ "CPython byte code". Docs.python.org. Архивировано из оригинала 5 июня 2020 г. Получено 16 февраля 2016 г.
^ "Python 2.5 internals" (PDF) . Архивировано (PDF) из оригинала 6 августа 2012 . Получено 19 апреля 2011 .
^ "Changelog – Python 3.9.0 documentation". docs.python.org . Архивировано из оригинала 7 февраля 2021 г. . Получено 8 февраля 2021 г. .
^ "Download Python". Python.org . Архивировано из оригинала 8 декабря 2020 г. . Получено 13 декабря 2020 г. .
^ "history [vmspython]". www.vmspython.org . Архивировано из оригинала 2 декабря 2020 г. . Получено 4 декабря 2020 г. .
^ "Интервью с Гвидо ван Россумом". Oreilly.com. Архивировано из оригинала 16 июля 2014 года . Получено 24 ноября 2008 года .
^ "Загрузить Python для других платформ". Python.org . Архивировано из оригинала 27 ноября 2020 г. . Получено 4 декабря 2020 г. .
^ "PyPy-совместимость". Pypy.org. Архивировано из оригинала 6 июня 2020 г. Получено 3 декабря 2012 г.
↑ Команда, The PyPy (28 декабря 2019 г.). «Загрузить и установить». PyPy . Архивировано из оригинала 8 января 2022 г. . Получено 8 января 2022 г. .
^ "Сравнение скорости CPython и Pypy". Speed.pypy.org. Архивировано из оригинала 10 мая 2021 г. Получено 3 декабря 2012 г.
^ "Codon: Differences with Python". Архивировано из оригинала 25 мая 2023 г. Получено 28 августа 2023 г.
^ Лоусон, Лорейн (14 марта 2023 г.). «MIT-Created Compiler Speeds up Python Code». The New Stack . Архивировано из оригинала 6 апреля 2023 г. . Получено 28 августа 2023 г. .
^ "Application-level Stackless features – PyPy 2.0.2 documentation". Doc.pypy.org. Архивировано из оригинала 4 июня 2020 г. Получено 17 июля 2013 г.
^ "Python-for-EV3". LEGO Education . Архивировано из оригинала 7 июня 2020 г. Получено 17 апреля 2019 г.
^ Йегулалп, Сердар (29 октября 2020 г.). «Pyston возвращается из мертвых, чтобы ускорить Python». InfoWorld . Архивировано из оригинала 27 января 2021 г. . Получено 26 января 2021 г. .
^ "cinder: ориентированная на производительность форк CPython от Instagram". GitHub . Архивировано из оригинала 4 мая 2021 г. Получено 4 мая 2021 г.
^ Арока, Рафаэль (7 августа 2021 г.). «Snek Lang: ощущается как Python на Arduinos». Yet Another Technology Blog . Архивировано из оригинала 5 января 2024 г. Получено 4 января 2024 г.
^ Aufranc (CNXSoft), Jean-Luc (16 января 2020 г.). "Snekboard управляет функциями LEGO Power с помощью языков программирования CircuitPython или Snek (краудфандинг) – CNX Software". CNX Software – Embedded Systems News . Архивировано из оригинала 5 января 2024 г. . Получено 4 января 2024 г. .
^ Кеннеди (@mkennedy), Майкл. «Готовы узнать, являетесь ли вы знаменитым git?». pythonbytes.fm . Архивировано из оригинала 5 января 2024 г. Получено 4 января 2024 г.
^ Паккард, Кит (20 декабря 2022 г.). «Язык программирования Snek: язык встраиваемых вычислений, вдохновленный Python» (PDF) . Архивировано (PDF) из оригинала 4 января 2024 г. . Получено 4 января 2024 г. .
^ "Планы по оптимизации Python". Google Project Hosting . 15 декабря 2009 г. Архивировано из оригинала 11 апреля 2016 г. Получено 24 сентября 2011 г.
^ "Python на Nokia N900". Стохастическая геометрия . 29 апреля 2010 г. Архивировано из оригинала 20 июня 2019 г. Получено 9 июля 2015 г.
^ "Brython". brython.info . Архивировано из оригинала 3 августа 2018 года . Получено 21 января 2021 года .
^ "Transcrypt – Python в браузере". transcrypt.org . Архивировано из оригинала 19 августа 2018 г. Получено 22 декабря 2020 г.
^ "Transcrypt: Anatomy of a Python to JavaScript Compiler". InfoQ . Архивировано из оригинала 5 декабря 2020 г. Получено 20 января 2021 г.
^ "Nuitka Home | Nuitka Home". nuitka.net . Архивировано из оригинала 30 мая 2020 года . Получено 18 августа 2017 года .
^ Гельтон, Серж; Брюне, Пьеррик; Амини, Мехди; Мерлини, Адриен; Корбийон, Ксавье; Рейно, Алан (16 марта 2015 г.). «Pythran: обеспечение статической оптимизации научных программ Python». Computational Science & Discovery . 8 (1). IOP Publishing: 014001. Bibcode : 2015CS&D....8a4001G. doi : 10.1088/1749-4680/8/1/014001 . ISSN 1749-4699.
^ "The Python → 11l → C++ transpiler". Архивировано из оригинала 24 сентября 2022 г. Получено 17 июля 2022 г.
^ "google/grumpy". 10 апреля 2020 г. Архивировано из оригинала 15 апреля 2020 г. Получено 25 марта 2020 г. – через GitHub.
^ "Проекты". opensource.google . Архивировано из оригинала 24 апреля 2020 г. Получено 25 марта 2020 г.
^ Франциско, Томас Клэберн в Сан. "Google's Grumpy code makes Python Go". www.theregister.com . Архивировано из оригинала 7 марта 2021 г. . Получено 20 января 2021 г. .
^ "GitHub – IronLanguages/ironpython3: Реализация Python 3.x для .NET Framework, построенная поверх Dynamic Language Runtime". GitHub . Архивировано из оригинала 28 сентября 2021 г.
^ "IronPython.net /". ironpython.net . Архивировано из оригинала 17 апреля 2021 г.
^ "Jython FAQ". www.jython.org . Архивировано из оригинала 22 апреля 2021 г. . Получено 22 апреля 2021 г. .
^ Мурри, Риккардо (2013). Производительность сред выполнения Python на нечисловом научном коде . Европейская конференция по Python в науке (EuroSciPy). arXiv : 1404.6388 . Bibcode : 2014arXiv1404.6388M.
^ "The Computer Language Benchmarks Game". Архивировано из оригинала 14 июня 2020 г. Получено 30 апреля 2020 г.
^ ab Warsaw, Barry; Hylton, Jeremy; Goodger, David (13 июня 2000 г.). "PEP 1 – PEP Purpose and Guidelines". Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 6 июня 2020 г. . Получено 19 апреля 2011 г. .
^ "PEP 8 – Style Guide for Python Code". Python.org . Архивировано из оригинала 17 апреля 2019 г. . Получено 26 марта 2019 г. .
^ Кэннон, Бретт. «Гвидо, некоторые ребята и список рассылки: как разрабатывается Python». python.org . Python Software Foundation. Архивировано из оригинала 1 июня 2009 г. Получено 27 июня 2009 г.
^ "Перемещение ошибок Python на GitHub [LWN.net]". Архивировано из оригинала 2 октября 2022 г. Получено 2 октября 2022 г.
^ "Python Developer's Guide – Python Developer's Guide". devguide.python.org . Архивировано из оригинала 9 ноября 2020 г. . Получено 17 декабря 2019 г. .
^ Хьюз, Оуэн (24 мая 2021 г.). «Языки программирования: почему Python 4.0 может никогда не появиться, по словам его создателя». TechRepublic . Архивировано из оригинала 14 июля 2022 г. Получено 16 мая 2022 г.
^ "PEP 602 – Annual Release Cycle for Python". Python.org . Архивировано из оригинала 14 июня 2020 г. . Получено 6 ноября 2019 г. .
^ "Изменение частоты выпуска Python [LWN.net]". lwn.net . Архивировано из оригинала 6 ноября 2019 . Получено 6 ноября 2019 .
^ Норвиц, Нил (8 апреля 2002 г.). "[Python-Dev] Release Schedules (было Stability & change)". Архивировано из оригинала 15 декабря 2018 г. Получено 27 июня 2009 г.
^ ab Aahz; Baxter, Anthony (15 марта 2001 г.). "PEP 6 – Bug Fix Releases". Предложения по улучшению Python . Python Software Foundation. Архивировано из оригинала 5 июня 2020 г. . Получено 27 июня 2009 г. .
^ "Python Buildbot". Руководство разработчика Python . Python Software Foundation. Архивировано из оригинала 5 июня 2020 г. Получено 24 сентября 2011 г.
^ "1. Расширение Python с помощью C или C++ – Документация Python 3.9.1". docs.python.org . Архивировано из оригинала 23 июня 2020 г. . Получено 14 февраля 2021 г. .
^ "PEP 623 – Удалить wstr из Unicode". Python.org . Архивировано из оригинала 5 марта 2021 г. . Получено 14 февраля 2021 г. .
^ "PEP 634 – Структурное сопоставление шаблонов: спецификация". Python.org . Архивировано из оригинала 6 мая 2021 г. . Получено 14 февраля 2021 г. .
^ "Documentation Tools". Python.org . Архивировано из оригинала 11 ноября 2020 г. . Получено 22 марта 2021 г. .
^ ab "Whetting Your Appetite". Учебник Python . Python Software Foundation. Архивировано из оригинала 26 октября 2012 г. Получено 20 февраля 2012 г.
^ «В Python, следует ли использовать else после return в блоке if?». Stack Overflow . Stack Exchange. 17 февраля 2011 г. Архивировано из оригинала 20 июня 2019 г. Получено 6 мая 2011 г.
^ Лутц, Марк (2009). Изучение Python: мощное объектно-ориентированное программирование. O'Reilly Media, Inc. стр. 17. ISBN9781449379322. Архивировано из оригинала 17 июля 2017 . Получено 9 мая 2017 .
^ Fehily, Chris (2002). Python. Peachpit Press. стр. xv. ISBN9780201748840. Архивировано из оригинала 17 июля 2017 . Получено 9 мая 2017 .
^ Лубанович, Билл (2014). Знакомство с Python. Севастополь, Калифорния: O'Reilly Media. стр. 305. ISBN978-1-4493-5936-2. Получено 31 июля 2023 г. .
^ Блейк, Трой (18 января 2021 г.). «Индекс TIOBE за январь 2021 г.». Новости и информация о технологиях от SeniorDBA . Архивировано из оригинала 21 марта 2021 г. Получено 26 февраля 2021 г.
^ "Цитаты о Python". Python Software Foundation. Архивировано из оригинала 3 июня 2020 г. Получено 8 января 2012 г.
^ "Организации, использующие Python". Python Software Foundation. Архивировано из оригинала 21 августа 2018 года . Получено 15 января 2009 года .
^ "Python: Святой Грааль программирования". Бюллетень ЦЕРН (31/2006). Публикации ЦЕРН. 31 июля 2006 г. Архивировано из оригинала 15 января 2013 г. Получено 11 февраля 2012 г.
^ Shafer, Daniel G. (17 января 2003 г.). «Python Streamlines Space Shuttle Mission Design». Python Software Foundation. Архивировано из оригинала 5 июня 2020 г. Получено 24 ноября 2008 г.
^ "Tornado: Facebook's Real-Time Web Framework для Python – Facebook для разработчиков". Facebook для разработчиков . Архивировано из оригинала 19 февраля 2019 года . Получено 19 июня 2018 года .
^ «Что управляет Instagram: сотни примеров, десятки технологий». Instagram Engineering. 11 декабря 2016 г. Архивировано из оригинала 15 июня 2020 г. Получено 27 мая 2019 г.
^ «Как мы используем Python в Spotify». Spotify Labs . 20 марта 2013 г. Архивировано из оригинала 10 июня 2020 г. Получено 25 июля 2018 г.
^ Fortenberry, Tim (17 января 2003 г.). «Industrial Light & Magic работает на Python». Python Software Foundation. Архивировано из оригинала 6 июня 2020 г. Получено 11 февраля 2012 г.
^ Тафт, Даррил К. (5 марта 2007 г.). «Python проникает в системы». eWeek.com . Ziff Davis Holdings. Архивировано из оригинала 13 августа 2021 г. Получено 24 сентября 2011 г.
^ GitHub – reddit-archive/reddit: исторический код с reddit.com., Архивы Reddit, заархивировано из оригинала 1 июня 2020 г. , извлечено 20 марта 2019 г.
^ «Масштабное общение в реальном времени с Elixir в Discord». 8 октября 2020 г.
^ «На каком языке программирования построен Baidu?». 5 июля 2018 г.
^ «Статистика использования и доля рынка Python для веб-сайтов». 2012. Архивировано из оригинала 13 августа 2021 г. Получено 18 декабря 2012 г.
^ Oliphant, Travis (2007). "Python для научных вычислений". Computing in Science and Engineering . 9 (3): 10–20. Bibcode :2007CSE.....9c..10O. CiteSeerX 10.1.1.474.6460 . doi :10.1109/MCSE.2007.58. ISSN 1521-9615. S2CID 206457124. Архивировано из оригинала 15 июня 2020 года . Получено 10 апреля 2015 года .
^ Millman, K. Jarrod; Aivazis, Michael (2011). «Python для ученых и инженеров». Computing in Science and Engineering . 13 (2): 9–12. Bibcode :2011CSE....13b...9M. doi :10.1109/MCSE.2011.36. Архивировано из оригинала 19 февраля 2019 года . Получено 7 июля 2014 года .
^ Научное образование с SageMath, Инновационные вычисления в научном образовании, архивировано из оригинала 15 июня 2020 г. , извлечено 22 апреля 2019 г.
^ "OpenCV: OpenCV-Python Tutorials". docs.opencv.org . Архивировано из оригинала 23 сентября 2020 г. . Получено 14 сентября 2020 г. .
^ Дин, Джефф ; Монга, Раджат; и др. (9 ноября 2015 г.). «TensorFlow: крупномасштабное машинное обучение в гетерогенных системах» (PDF) . TensorFlow.org . Google Research. Архивировано (PDF) из оригинала 20 ноября 2015 г. . Получено 10 ноября 2015 г. .
^ Пятецкий, Грегори. "Python съедает R: лучшее программное обеспечение для аналитики, науки о данных, машинного обучения в 2018 году: тенденции и анализ". KDnuggets . Архивировано из оригинала 15 ноября 2019 года . Получено 30 мая 2018 года .
^ "Who is using scikit-learn? – scikit-learn 0.20.1 documentation". scikit-learn.org . Архивировано из оригинала 6 мая 2020 г. . Получено 30 ноября 2018 г. .
^ Jouppi, Norm . "Google supercharges machine learning tasks with TPU custom chip". Блог Google Cloud Platform . Архивировано из оригинала 18 мая 2016 г. Получено 19 мая 2016 г.
^ Де Рэдт, Люк; Киммиг, Ангелика (2015). «Концепции вероятностного (логического) программирования». Машинное обучение . 100 (1): 5–47. doi : 10.1007/s10994-015-5494-z . S2CID 3166992.
^ "Natural Language Toolkit – NLTK 3.5b1 documentation". www.nltk.org . Архивировано из оригинала 13 июня 2020 г. . Получено 10 апреля 2020 г. .
^ Андерсен, К. и Свифт, Т., 2023. Система Януса: мост к новым приложениям пролога. В Prolog: The Next 50 Years (стр. 93–104). Cham: Springer Nature Switzerland.
^ "SWI-Prolog Python interface". Архивировано из оригинала 15 марта 2024 г. Получено 15 марта 2024 г.
^ Tarau, P., 2023. Размышления об автоматизации, обучаемости и выразительности в языках программирования на основе логики. В Prolog: The Next 50 Years (стр. 359–371). Cham: Springer Nature Switzerland.
^ "Tkinter — Python interface to TCL/Tk". Архивировано из оригинала 18 октября 2012 г. Получено 9 июня 2023 г.
^ "Python Tkinter Tutorial". 3 июня 2020 г. Архивировано из оригинала 9 июня 2023 г. Получено 9 июня 2023 г.
^ "Установщики GIMP для Windows – Часто задаваемые вопросы". 26 июля 2013 г. Архивировано из оригинала 17 июля 2013 г. Получено 26 июля 2013 г.
^ "jasc psp9components". Архивировано из оригинала 19 марта 2008 года.
^ "О начале работы с написанием скриптов геообработки". ArcGIS Desktop Help 9.2 . Environmental Systems Research Institute. 17 ноября 2006 г. Архивировано из оригинала 5 июня 2020 г. Получено 11 февраля 2012 г.
^ CCP porkbelly (24 августа 2010 г.). "Stackless Python 2.7". EVE Community Dev Blogs . CCP Games . Архивировано из оригинала 11 января 2014 г. Получено 11 января 2014 г. Как вы знаете, в основе EVE лежит язык программирования, известный как Stackless Python.
^ Кодилл, Барри (20 сентября 2005 г.). "Модификация Civilization IV Сида Мейера". Блог разработчиков Civilization IV Сида Мейера . Firaxis Games . Архивировано из оригинала 2 декабря 2010 г. Мы создали три уровня инструментов... Следующий уровень предлагает поддержку Python и XML, позволяя моддерам с большим опытом манипулировать игровым миром и всем, что в нем есть.
^ "Python Language Guide (v1.0)". Google Documents List Data API v1.0 . Архивировано из оригинала 15 июля 2010 г.
^ "Python Setup and Usage". Python Software Foundation. Архивировано из оригинала 17 июня 2020 г. Получено 10 января 2020 г.
^ "Иммунитет: знание того, что вы в безопасности". Архивировано из оригинала 16 февраля 2009 года.
^ "Core Security". Core Security . Архивировано из оригинала 9 июня 2020 . Получено 10 апреля 2020 .
^ "Что такое Sugar?". Sugar Labs. Архивировано из оригинала 9 января 2009 года . Получено 11 февраля 2012 года .
^ "4.0 Новые функции и исправления". LibreOffice.org . The Document Foundation . 2013. Архивировано из оригинала 9 февраля 2014 года . Получено 25 февраля 2013 года .
^ "Gotchas for Python Users". boo.codehaus.org . Codehaus Foundation. Архивировано из оригинала 11 декабря 2008 г. Получено 24 ноября 2008 г.
^ Эстербрук, Чарльз. "Благодарности". cobra-language.com . Язык Cobra. Архивировано из оригинала 8 февраля 2008 года . Получено 7 апреля 2010 года .
^ "Предложения: итераторы и генераторы [ES4 Wiki]". wiki.ecmascript.org. Архивировано из оригинала 20 октября 2007 г. Получено 24 ноября 2008 г.
^ "Часто задаваемые вопросы". Документация Godot Engine . Архивировано из оригинала 28 апреля 2021 г. Получено 10 мая 2021 г.
^ Кинкейд, Джейсон (10 ноября 2009 г.). «Google Go: новый язык программирования, сочетающий Python и C++». TechCrunch . Архивировано из оригинала 18 января 2010 г. Получено 29 января 2010 г.
^ Strachan, James (29 августа 2003 г.). "Groovy – рождение нового динамического языка для платформы Java". Архивировано из оригинала 5 апреля 2007 г. Получено 11 июня 2007 г.
^ "Modular Docs – Why Mojo". docs.modular.com . Архивировано из оригинала 5 мая 2023 г. . Получено 5 мая 2023 г. Mojo как член семейства Python [..] Внедрение Python значительно упрощает наши усилия по проектированию, поскольку большая часть синтаксиса уже определена. [..] мы решили, что правильная долгосрочная цель для Mojo — предоставить надмножество Python (т. е. быть совместимым с существующими программами) и немедленно принять CPython для поддержки экосистемы long-tail. Мы ожидаем и надеемся, что программистам Python Mojo будет сразу знаком, а также предоставит новые инструменты для разработки кода системного уровня, которые позволят вам делать то, для чего Python возвращается к C и C++.
^ Спенсер, Майкл (4 мая 2023 г.). «Что такое язык программирования Mojo?». datasciencelearningcenter.substack.com . Архивировано из оригинала 5 мая 2023 г. . Получено 5 мая 2023 г. .
^ Йегулалп, Сердар (16 января 2017 г.). «Язык Nim черпает лучшее из Python, Rust, Go и Lisp». InfoWorld . Архивировано из оригинала 13 октября 2018 г. Получено 7 июня 2020 г. Синтаксис Nim сильно напоминает Python, поскольку он использует отступы в блоках кода и некоторые элементы того же синтаксиса (например, способ построения блоков if/elif/then/else).
^ "Интервью с создателем Ruby". Linuxdevcenter.com. Архивировано из оригинала 28 апреля 2018 года . Получено 3 декабря 2012 года .
^ Lattner, Chris (3 июня 2014 г.). "Домашняя страница Криса Латтнера". Крис Латтнер. Архивировано из оригинала 22 декабря 2015 г. Получено 3 июня 2014 г. Я начал работу над языком программирования Swift в июле 2010 г. Я реализовал большую часть базовой структуры языка, и лишь несколько человек знали о его существовании. Несколько других (удивительных) людей начали вносить серьезный вклад в конце 2011 г., и это стало основным направлением для группы Apple Developer Tools в июле 2013 г. [...], черпая идеи из Objective-C, Rust, Haskell, Ruby, Python, C#, CLU и слишком многих других, чтобы перечислить.
↑ Джалан, Нишант Анжани (10 ноября 2022 г.). «Программирование на Котлине». Кодекс . Проверено 29 апреля 2024 г.
^ Куприс, Андреас; Феллоуз, Донал К. (14 сентября 2000 г.). "TIP #3: TIP Format". tcl.tk . Tcl Developer Xchange. Архивировано из оригинала 13 июля 2017 г. . Получено 24 ноября 2008 г. .
^ Густафссон, Пер; Нисканен, Раймо (29 января 2007 г.). «EEP 1: Цель и руководящие принципы EEP». erlang.org. Архивировано из оригинала 15 июня 2020 г. Получено 19 апреля 2011 г.
^ "Swift Evolution Process". Репозиторий Swift Programming Language Evolution на GitHub . 18 февраля 2020 г. Архивировано из оригинала 27 апреля 2020 г. Получено 27 апреля 2020 г.
Источники
«Python для искусственного интеллекта». Python Wiki. 19 июля 2012 г. Архивировано из оригинала 1 ноября 2012 г. Получено 3 декабря 2012 г.
Paine, Jocelyn, ed. (август 2005 г.). "AI in Python". Информационный бюллетень AI Expert . Amzi!. Архивировано из оригинала 26 марта 2012 г. Получено 11 февраля 2012 г.
"PyAIML 0.8.5: Python Package Index". Pypi.python.org . Получено 17 июля 2013 г.
Дауни, Аллен Б. (май 2012 г.). Think Python: How to Think Like a Computer Scientist (версия 1.6.6 ред.). Cambridge University Press. ISBN 978-0-521-72596-5.
Гамильтон, Наоми (5 августа 2008 г.). «Языки программирования от А до Я: Python». Computerworld . Архивировано из оригинала 29 декабря 2008 г. . Получено 31 марта 2010 г. .
Лутц, Марк (2013). Изучение Python (5-е изд.). O'Reilly Media. ISBN 978-0-596-15806-4.
Саммерфилд, Марк (2009). Программирование на Python 3 (2-е изд.). Addison-Wesley Professional. ISBN 978-0-321-68056-3.
Рамальо, Лучано (май 2022 г.). Свободный Питон. О'Рейли Медиа. ISBN 978-1-4920-5632-4.