Это хорошая статья. Для получения дополнительной информации нажмите здесь.
Из Википедии, бесплатной энциклопедии
  (Перенаправлено с языка программирования Python )
Перейти к навигации Перейти к поиску

Python - это интерпретируемый язык программирования общего назначения высокого уровня . Философия дизайна Python подчеркивает удобочитаемость кода с заметным использованием значительных отступов . Его языковые конструкции, а также объектно-ориентированный подход призваны помочь программистам писать ясный, логичный код для небольших и крупномасштабных проектов. [30]

Python имеет динамическую типизацию и сборщик мусора . Он поддерживает несколько парадигм программирования , включая структурированное (в частности, процедурное ), объектно-ориентированное и функциональное программирование . Python часто описывается как язык с "включенными батареями" из-за его обширной стандартной библиотеки . [31]

Гвидо ван Россум начал работать над Python в конце 1980-х, как преемником языка программирования ABC , и впервые выпустил его в 1991 году как Python 0.9.0. [32] Python 2.0 был выпущен в 2000 году и представил новые функции, такие как понимание списков и систему сбора мусора с использованием подсчета ссылок, и был прекращен с версией 2.7.18 в 2020 году. [33] Python 3.0 был выпущен в 2008 году и был основным пересмотр языка, который не является полностью обратно совместимым, и большая часть кода Python 2 не запускается без изменений на Python 3.

Python неизменно считается одним из самых популярных языков программирования. [34] [35] [36] [37] [38]

История [ править ]

Гвидо ван Россум на OSCON 2006

Python был задуман в конце 1980 - х годов [39] на Гвидо ван Россум в Centrum Wiskunde & Informatica (КРИ) в Нидерландах в качестве преемника языка программирования ABC , который был вдохновлен Setl , [40] способны обработки исключений и взаимодействия с Операционная система Amoeba . [10] Его реализация началась в декабре 1989 года. [41] Ван Россум взял на себя исключительную ответственность за проект, как ведущий разработчик, до 12 июля 2018 года, когда он объявил о своем «постоянном отпуске» от своих обязанностей в качестве благотворительного диктатора Python на всю жизнь.- звание, присвоенное ему сообществом Python, чтобы отразить его долгосрочную приверженность в качестве лица, принимающего решения по проекту. [42] Теперь он разделяет свое лидерство в качестве члена руководящего совета из пяти человек. [43] [44] [45] В январе 2019 года активные разработчики ядра Python избрали Бретта Кэннона, Ника Коглана, Барри Варшаву, Кэрол Виллинг и Ван Россума в «Руководящий совет» из пяти человек, которые возглавили проект. [46] Гвидо ван Россум с тех пор снял свою кандидатуру в Руководящий совет 2020 года. [47]

Python 2.0 был выпущен 16 октября 2000 года с множеством важных новых функций, включая сборщик мусора с обнаружением циклов и поддержку Unicode . [48]

Python 3.0 был выпущен 3 декабря 2008 года. Это была основная версия языка, не имеющая полной обратной совместимости . [49] Многие из его основных функций были портированные на Python 2.6.x [50] и 2.7.x версия серии. Релизы Python 3 включают 2to3утилиту, которая автоматизирует (по крайней мере частично) перевод кода Python 2 в Python 3. [51]

Дата окончания жизненного цикла Python 2.7 была первоначально установлена ​​на 2015 год, а затем перенесена на 2020 год из-за опасений, что большая часть существующего кода не может быть легко перенесена на Python 3. [52] [53] Больше никаких исправлений безопасности или для него будут выпущены другие улучшения. [54] [55] По окончании срока службы Python 2 поддерживается только Python 3.6.x [56] и более поздние версии .

Python 3.9.2 и 3.8.8 были ускорены [57], поскольку все версии Python (включая 2.7 [58] ) имели проблемы с безопасностью, что приводило к возможному удаленному выполнению кода [59] и заражению веб-кеша . [60]

Философия дизайна и особенности [ править ]

Python - это язык программирования с несколькими парадигмами . Объектно-ориентированное программирование и структурное программирование полностью поддерживаются, и многие из его функций поддерживают функциональное программирование и аспектно-ориентированное программирование (в том числе с помощью метапрограммирования [61] и метаобъектов (магических методов)). [62] Многие другие парадигмы поддерживаются посредством расширений, включая проектирование по контракту [63] [64] и логическое программирование . [65]

Python использует динамическую типизацию и комбинацию подсчета ссылок и сборщика мусора, определяющего цикл, для управления памятью . [66] Он также имеет динамическое разрешение имен ( позднее связывание ), которое связывает имена методов и переменных во время выполнения программы.

Дизайн Python предлагает некоторую поддержку функционального программирования в традициях Lisp . Он имеет filter, mapи reduceфункции; составить список понятий , словарей , наборов и выражений генератора . [67] Стандартная библиотека имеет два модуля (itertools и functools), которые реализуют функциональные инструменты, заимствованные из Haskell и Standard ML . [68]

Основная философия языка кратко изложена в документе « Дзен Python» ( PEP 20 ), который включает такие афоризмы , как: [69]

  • Красивое лучше уродливого.
  • Явное лучше, чем неявное.
  • Лучше простое, чем сложное.
  • Сложный лучше, чем сложный.
  • Читаемость имеет значение.

Вместо того, чтобы иметь все свои функциональные возможности, встроенные в ядро, Python был разработан с учетом высокой расширяемости (с помощью модулей). Эта компактная модульность сделала его особенно популярным как средство добавления программируемых интерфейсов к существующим приложениям. Представление Ван Россума о небольшом базовом языке с большой стандартной библиотекой и легко расширяемым интерпретатором возникло из-за его разочарования в ABC , которая придерживалась противоположного подхода. [39]

Python стремится к более простому и менее загроможденному синтаксису и грамматике, давая разработчикам возможность выбора в своей методологии кодирования. В отличие от девиза Perl « существует более одного способа сделать это », Python придерживается философии дизайна «должен быть один - и желательно только один - очевидный способ сделать это». [69] Алекс Мартелли , сотрудник в Foundation Python Software и Python автор книги пишет , что « Для того, чтобы описать то , как„умный“это не считается комплиментом в культуре Python.» [70]

Разработчики Python стремятся избежать преждевременной оптимизации и отклоняют исправления для некритических частей эталонной реализации CPython , которые предлагали бы незначительное увеличение скорости за счет ясности. [71] Когда важна скорость, программист на Python может перенести функции, критичные ко времени, в модули расширения, написанные на таких языках, как C, или использовать PyPy , своевременный компилятор . Также доступен Cython , который переводит скрипт Python на C и выполняет прямые вызовы API уровня C в интерпретатор Python.

Важная цель разработчиков Python - сделать его интересным в использовании. Это отражено в названии языка - дань уважения британской комедийной группе Монти Пайтон [72] - и иногда в игровых подходах к учебным пособиям и справочным материалам, например, в примерах со спамом и яйцами (из известного скетча Монти Пайтона ) стандартного foo и bar . [73] [74]

Распространенным неологизмом в сообществе Python является питонический , который может иметь широкий диапазон значений, связанных со стилем программы. Сказать, что код питонический, значит сказать, что он хорошо использует идиомы Python, что он естественен или демонстрирует свободное владение языком, что он соответствует минималистской философии Python и делает упор на удобочитаемость. Напротив, код, который трудно понять или который читается как грубая транскрипция с другого языка программирования, называется непифоническим . [75] [76]

Пользователей и почитателей Python, особенно тех, кого считают знающими или опытными, часто называют питонистами . [77] [78]

Синтаксис и семантика [ править ]

Python задуман как легко читаемый язык. Его форматирование визуально не загромождено, и в нем часто используются английские ключевые слова, а в других языках используются знаки препинания. В отличие от многих других языков, в нем не используются фигурные скобки для разделения блоков, а точки с запятой после операторов разрешены, но используются редко, если вообще используются. В нем меньше синтаксических исключений и особых случаев, чем в C или Pascal . [79]

Отступ [ править ]

Python использует пробельные отступы, а не фигурные скобки или ключевые слова, чтобы разграничить блоки . Увеличение отступа происходит после определенных утверждений; уменьшение отступа означает конец текущего блока. [80] Таким образом, визуальная структура программы точно представляет семантическую структуру программы. [2] Эту функцию иногда называют правилом оффсайда , которое разделяют некоторые другие языки, но в большинстве языков отступы не имеют семантического значения. Рекомендуемый размер отступа - четыре пробела. [81]

Заявления и поток управления [ править ]

Заявления Python включают (среди прочего):

  • Оператор присваивания с использованием единственного знака равенства =.
  • ifЗаявление, которое условно выполняет блок кода, а также elseи elif(сжатие еще-если).
  • forЗаявление, которое перебирает итератор объекта, захватив каждый элемент в локальном переменную для использования прилагаемого блока.
  • whileЗаявление, которое выполняет блок кода до тех пор , как его условие истинно.
  • tryЗаявление, которое позволяет исключения , поднятые в прилагаемом блоке коды пойманы и обработаны exceptпунктами; это также гарантирует, что код очистки в finallyблоке всегда будет выполняться независимо от того, как блок выходит.
  • raiseЗаявление, используется для повышения заданного исключения или ререйз перехваченных исключений.
  • classЗаявление, которое выполняет блок кода и присоединяет его локальное пространство имен в класс , для использования в объектно-ориентированном программировании .
  • defУтверждение, которое определяет функцию или метод .
  • withЗаявление, с Python 2.5 выпущен в сентябре 2006 года [82] , который охватывает блок кода в пределах менеджера контекста (например, приобретая замок до того , как блок кода выполняется захват и освобождение после этого, или открыть файл , а затем закрыть it), допуская поведение, подобное получению ресурсов как инициализации (RAII), и заменяет обычную идиому try / finally. [83]
  • Оператор breakвыходит из цикла.
  • Оператор continueпропускает эту итерацию и переходит к следующему элементу.
  • Оператор delудаляет переменную, что означает, что ссылка из имени на значение удаляется, и попытка использовать эту переменную приведет к ошибке. Удаленную переменную можно переназначить.
  • passЗаявление, которое служит в качестве NOP . Синтаксически необходимо создать пустой блок кода.
  • assertЗаявление, используется во время отладки для проверки условий , которые должны применяться.
  • yieldЗаявление, которое возвращает значение из генератора функции. Начиная с Python 2.5, yieldтакже является оператором. Эта форма используется для реализации сопрограмм .
  • returnЗаявление, используется для возврата значения из функции.
  • importЗаявление, которое используется для импорта модулей, функции или переменные могут быть использованы в текущей программе. Есть три способа использования import: или или .import <module name> [as <alias>]from <module name> import *from <module name> import <definition 1> [as <alias 1>], <definition 2> [as <alias 2>], ...

Оператор присваивания ( =) работает путем привязки имени как ссылки к отдельному, динамически выделяемому объекту . Впоследствии переменные могут быть повторно привязаны к любому объекту в любое время. В Python имя переменной является универсальным держателем ссылки и не имеет связанного с ним фиксированного типа данных . Однако в данный момент переменная будет ссылаться на некоторый объект, который будет иметь тип. Это называется динамической типизацией и отличается от языков программирования со статической типизацией , где каждая переменная может содержать значения только определенного типа.

Python не поддерживает оптимизацию хвостовых вызовов или первоклассные продолжения , и, по словам Гвидо ван Россума, этого никогда не будет. [84] [85] Однако в версии 2.5 улучшена поддержка функций, подобных сопрограммам , за счет расширения генераторов Python . [86] До 2.5 генераторы были ленивыми итераторами ; информация передавалась из генератора в одном направлении. Из Python 2.5 можно передавать информацию обратно в функцию генератора, а из Python 3.3 информация может передаваться через несколько уровней стека. [87]

Выражения [ править ]

Некоторые выражения Python похожи на выражения , встречающиеся в таких языках, как C и Java , а некоторые нет:

  • Сложение, вычитание и умножение одинаковы, но поведение деления отличается. В Python есть два типа разделения. Это деление по полу (или целочисленное деление) //и деление с плавающей запятой /. [88] Python также использует **оператор для возведения в степень.
  • В Python 3.5 появился новый @инфиксный оператор. Он предназначен для использования такими библиотеками, как NumPy, для умножения матриц . [89] [90]
  • В Python 3.8 :=был введен синтаксис , называемый «оператором моржа». Он присваивает значения переменным как часть более крупного выражения. [91]
  • В Python ==сравнивается по значению, а в Java сравниваются числовые значения по значению [92] и объекты по ссылке. [93] (Сравнение значений в Java на объектах может выполняться с помощью этого equals()метода.) isОператор Python может использоваться для сравнения идентификаторов объектов (сравнение по ссылке). Например, в Python сравнения могут быть связаны .a <= b <= c
  • Python использует слова and, or, notдля своих логических операторов , а не символического &&, ||, !используемые в Java и C.
  • В Python есть тип выражения, называемый пониманием списка, а также более общее выражение, называемое выражением генератора . [67]
  • Анонимные функции реализованы с использованием лямбда-выражений ; однако они ограничены тем, что тело может быть только одним выражением.
  • Условные выражения в Python записываются как [94] (порядок операндов отличается от оператора, общего для многих других языков).x if c else yc ? x : y
  • Python делает различие между списками и кортежами . Списки записываются как изменяемые и не могут использоваться в качестве ключей словарей (ключи словаря должны быть неизменными в Python). Кортежи записываются как неизменяемые и поэтому могут использоваться в качестве ключей словарей при условии, что все элементы кортежа неизменяемы. Оператор может быть использован для конкатенации два кортежа, который не непосредственно изменять их содержимое, а , скорее , создает новый кортеж , содержащий в себе элементы обоих предусмотренных кортежей. Таким образом, если переменная изначально равна , выполнение сначала вычисляет , что дает результат , который затем присваивается обратно[1, 2, 3](1, 2, 3)+t(1, 2, 3)t = t + (4, 5)t + (4, 5)(1, 2, 3, 4, 5)t, тем самым эффективно «изменяя содержимое» t, при этом соблюдая неизменяемую природу объектов кортежей. Скобки необязательны для кортежей в однозначном контексте. [95]
  • Распаковка последовательности функций Python , в которой несколько выражений, каждое из которых оценивает все, что может быть присвоено (переменная, свойство, доступное для записи и т. Д.), Связаны таким же образом, как и формирующие литералы кортежа, и в целом помещаются в левая часть знака равенства в операторе присваивания. Оператор ожидает итерируемый объект в правой части знака равенства, который производит такое же количество значений, что и предоставленные записываемые выражения при итерации, и будет выполнять итерацию через него, присваивая каждое из полученных значений соответствующему выражению слева . [96]
  • В Python есть оператор «строкового формата» %. Это работает аналогично printfформатированию строк в C , например, вычисляет . В Python 3 и 2.6+ это было дополнено методом класса, например . Python 3.6 добавлен "F-строка": . [97]"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}'
  • Строки в Python можно объединять , «добавляя» их (тот же оператор, что и для добавления целых чисел и чисел с плавающей запятой). Например, возвращается . Даже если ваши строки содержат числа, они все равно добавляются как строки, а не целые числа. Например, возвращается ."spam" + "eggs""spameggs""2" + "2""22"
  • В Python есть различные типы строковых литералов :
    • Строки, разделенные одинарными или двойными кавычками. В отличие от оболочек Unix , Perl и языков с влиянием Perl, одинарные кавычки и двойные кавычки работают одинаково. В обоих типах строк \в качестве escape-символа используется обратная косая черта ( ) . Строковая интерполяция стала доступна в Python 3.6 как «форматированные строковые литералы». [97]
    • Строки в тройных кавычках, которые начинаются и заканчиваются серией из трех одинарных или двойных кавычек. Они могут занимать несколько строк и функционировать как здесь документы в оболочках, Perl и Ruby .
    • Необработанные строковые разновидности, обозначаемые префиксом строкового литерала с расширением r. Escape-последовательности не интерпретируются; следовательно, необработанные строки полезны там, где обычны буквальные обратные косые черты, такие как регулярные выражения и пути в стиле Windows . Сравните « @-квотирование» в C # .
  • Python имеет индекс массива и выражения нарезки массива в списках, обозначенные как a[key], или . Индексы отсчитываются от нуля , а отрицательные индексы относятся к концу. Ломтики взять элементы из стартового индекса до, но не включая, стоп индекс. Третий параметр среза, называемый step или stride , позволяет пропускать и переворачивать элементы. Индексы срезов могут быть опущены, например, возвращает копию всего списка. Каждый элемент фрагмента - это неглубокая копия .a[start:stop]a[start:stop:step]a[:]

В Python строго соблюдается различие между выражениями и операторами, в отличие от таких языков, как Common Lisp , Scheme или Ruby . Это приводит к дублированию некоторых функций. Например:

  • Списковых против for-loops
  • Условные выражения против ifблоков
  • eval()Против exec()встроенных функций (в Python 2, execэто утверждение); первая предназначена для выражений, вторая - для операторов.

Операторы не могут быть частью выражения, поэтому список и другие понимания или лямбда-выражения , все из которых являются выражениями, не могут содержать операторов. Частным случаем этого является то, что оператор присваивания, такой как не может быть частью условного выражения условного оператора. Это дает то преимущество, что позволяет избежать классической ошибки C, заключающейся в ошибочном принятии оператора присваивания за оператор равенства в условиях: является синтаксически допустимым (но, вероятно, непреднамеренным) кодом C, но вызывает синтаксическую ошибку в Python.a = 1===if (c = 1) { ... }if c = 1: ...

Методы [ править ]

Методы объектов - это функции, прикрепленные к классу объекта; синтаксис для обычных методов и функций является синтаксическим сахаром для . Методы Python имеют явный параметр для доступа к данным экземпляра , в отличие от неявного (или ) в некоторых других объектно-ориентированных языках программирования (например, C ++ , Java , Objective-C или Ruby ). [98]instance.method(argument)Class.method(instance, argument)selfselfthis

Печатать [ править ]

Стандартная иерархия типов в Python 3

Python использует утиную типизацию и имеет типизированные объекты, но нетипизированные имена переменных. Ограничения типа не проверяются во время компиляции ; скорее, операции с объектом могут завершиться неудачно, что означает, что данный объект не подходит для типа. Несмотря на то , что Python является динамически типизированным , он строго типизирован , запрещая операции, которые не определены четко (например, добавление числа в строку), а не пытается молча понять их.

Python позволяет программистам определять свои собственные типы с помощью классов , которые чаще всего используются для объектно-ориентированного программирования . Новые экземпляры классов создаются путем вызова класса (например, или ), а классы являются экземплярами метакласса (сам является экземпляром самого себя), что позволяет метапрограммировать и отражать .SpamClass()EggsClass() type

До версии 3.0 в Python было два типа классов: старый и новый . [99] Синтаксис обоих стилей одинаков, разница в том, objectнаследуется ли класс от него, прямо или косвенно (все классы нового стиля наследуются от objectи являются экземплярами type). В версиях Python 2, начиная с Python 2.2 и выше, могут использоваться оба типа классов. Классы старого стиля были удалены в Python 3.0.

Долгосрочный план состоит в том, чтобы поддерживать постепенную типизацию [100], и начиная с Python 3.5 синтаксис языка позволяет указывать статические типы, но они не проверяются в реализации по умолчанию, CPython . Экспериментальная дополнительная проверка статического типа с именем mypy поддерживает проверку типов во время компиляции. [101]

^ a Не доступен напрямую по имени

Арифметические операции [ править ]

Python имеет обычные символы для арифметических операторов ( +, -, *, /), оператор пола деления //и операции по модулю % (где остаток может быть отрицательным, например 4 % -3 == -2). Он также имеет **для возведения в степень , например 5**3 == 125и 9**0.5 == 3.0, и оператор матричного умножения @. [105] Эти операторы работают как в традиционной математике; с теми же правилами приоритета , инфиксные операторы ( +а -также могут быть унарными для представления положительных и отрицательных чисел соответственно).

Деление между целыми числами дает результаты с плавающей запятой. Поведение деления значительно изменилось со временем: [106]

  • Python 2.1 и более ранние версии использовали поведение деления C. /Оператор целочисленное деление , если оба операнда являются целыми числами, и деление с плавающей точкой в противном случае. Целочисленное деление округляется до 0, например, и .7/3 == 2-7/3 == -2
  • Python 2.2 изменил целочисленное деление на округление в сторону отрицательной бесконечности, например 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
  • Python 3.0 изменен /на всегда деление с плавающей запятой, например .5/2 == 2.5

С точки зрения Python, /это верно деление (или просто разделение ), и //это пол деление. / до версии 3.0 классическое деление . [106]

Округление в сторону отрицательной бесконечности, хотя и отличается от большинства языков, добавляет последовательности. Например, это означает, что уравнение всегда верно. Это также означает, что уравнение справедливо как для положительных, так и для отрицательных значений . Однако сохранение справедливости этого уравнения означает, что хотя результат , как и ожидалось, находится в полуоткрытом интервале [0, b ), где - положительное целое число, он должен лежать в интервале ( b , 0], когда отрицательный. [107](a + b)//b == a//b + 1b*(a//b) + a%b == aaa%bbb

Python предоставляет roundфункцию округления числа с плавающей запятой до ближайшего целого числа. Для разрешения конфликтов Python 3 использует округление до четности : round(1.5)и round(2.5)оба производят 2. [108] В версиях до 3 использовалось округление от нуля : round(0.5)есть 1.0, round(-0.5)есть −1.0. [109]

Python допускает логические выражения с несколькими отношениями равенства способом, совместимым с общим использованием в математике. Например, выражение a < b < cпроверяет , является ли aменьше bи bменьше c. [110] Языки, производные от языка C, интерпретируют это выражение по-разному: в языке C выражение сначала оценивает a < b, в результате чего получается 0 или 1, а затем этот результат сравнивается с c. [111]

Python использует арифметику произвольной точности для всех целочисленных операций. DecimalТипа / класс в decimalмодуле дает число с плавающей десятичной точкой с заранее определенной точностью и произвольной несколько режимов округления. [112]Fraction класс в fractionsмодуле обеспечивает произвольную точность для рациональных чисел . [113]

Благодаря обширной математической библиотеке Python и сторонней библиотеке NumPy, которая дополнительно расширяет собственные возможности, он часто используется в качестве научного языка сценариев для помощи в таких проблемах, как обработка и манипулирование числовыми данными. [114] [115]

Примеры программирования [ править ]

Программа Hello World :

print ( 'Привет, мир!' )

Программа для вычисления факториала положительного целого числа:

n  =  int ( input ( 'Введите число, и его факториал будет напечатан:' ))если  n  <  0 :  поднять  ValueError ( 'Вы должны ввести неотрицательное целое число' )factorial  =  1 для  i  в  диапазоне ( 2 ,  n  +  1 ):  factorial  * =  iпечать ( факториал )

Библиотеки [ править ]

Большая стандартная библиотека Python , которую обычно называют одной из ее самых сильных сторон [116], предоставляет инструменты, подходящие для многих задач. Для приложений с выходом в Интернет поддерживаются многие стандартные форматы и протоколы, такие как MIME и HTTP . Он включает модули для создания графических пользовательских интерфейсов , подключения к реляционным базам данных , генерации псевдослучайных чисел , арифметики с десятичными числами произвольной точности, [117] манипулирования регулярными выражениями и модульного тестирования .

Некоторые части стандартной библиотеки охвачены спецификациями (например, реализация интерфейса шлюза веб-сервера (WSGI) wsgirefследует за PEP 333 [118] ), но большинство модулей - нет. Они указаны в их коде, внутренней документации и наборах тестов . Однако, поскольку большая часть стандартной библиотеки представляет собой кросс-платформенный код Python, только несколько модулей нуждаются в изменении или переписывании для различных реализаций.

По состоянию на март 2021 года , Python Index Package (PyPI), официальный репозиторий программного обеспечения сторонних разработчиков Python, содержит более 290000 [119] пакетов с широким спектром функциональных возможностей , в том числе:

  • Автоматизация
  • Аналитика данных
  • Базы данных
  • Документация
  • Графические пользовательские интерфейсы
  • Обработка изображений
  • Машинное обучение
  • Мобильное приложение
  • Мультимедиа
  • Компьютерная сеть
  • Научные вычисления
  • Системное администрирование
  • Фреймворки для тестирования
  • Обработка текста
  • Веб-фреймворки
  • Парсинг веб-страниц

Среда разработки [ править ]

Большинство реализаций Python (включая CPython) включают цикл чтения-оценки-печати (REPL), позволяющий им функционировать как интерпретатор командной строки, для которого пользователь вводит операторы последовательно и немедленно получает результаты.

Другие оболочки, включая IDLE и IPython , добавляют дополнительные возможности, такие как улучшенное автозаполнение, сохранение состояния сеанса и подсветка синтаксиса .

Помимо стандартных настольных интегрированных сред разработки , существуют IDE на основе веб-браузера ; SageMath (предназначен для разработки программ Python, связанных с наукой и математикой); PythonAnywhere , IDE на основе браузера и среда хостинга; и Canopy IDE, коммерческая среда разработки Python, ориентированная на научные вычисления . [120]

Реализации [ править ]

Эталонная реализация [ править ]

CPython - эталонная реализация Python. Он написан на C , соответствует стандарту C89 с несколькими избранными функциями C99 (с выходом более поздних версий C он считается устаревшим; [121] [122] CPython включает собственные расширения C, но сторонние расширения не ограничиваются более старыми версиями C. версии, например, могут быть реализованы с помощью C11 или C ++ [123] ). [124] Он компилирует программы Python в промежуточный байт-код [125], который затем выполняется его виртуальной машиной . [126]CPython распространяется с большой стандартной библиотекой, написанной на смеси C и собственного Python. Он доступен для многих платформ, включая Windows (начиная с Python 3.9 установщик Python намеренно не может быть установлен в Windows 7 и 8; [127] [128] Windows XP поддерживалась до Python 3.5) и большинство современных Unix-подобных систем, включая macOS (и Mac Apple M1 , начиная с Python 3.9.1, с экспериментальным установщиком) и неофициальную поддержку, например, VMS . [129] Переносимость платформы была одним из ее первых приоритетов [130] во время периода Python 1 и 2, даже OS / 2 иПоддерживались Solaris ; С тех пор поддержка [131] была прекращена для многих платформ.

Другие реализации [ править ]

  • PyPy - это быстрый и совместимый интерпретатор Python 2.7 и 3.6. [132] Его своевременный компилятор обеспечивает значительное улучшение скорости по сравнению с CPython, но некоторые библиотеки, написанные на C, не могут использоваться с ним. [133] [134]
  • Stackless Python - это важный форк CPython, реализующий микропотоки ; он не использует стек вызовов таким же образом, что позволяет выполнять массово параллельные программы. PyPy также имеет версию без стека. [135]
  • MicroPython и CircuitPython - это варианты Python 3, оптимизированные для микроконтроллеров , включая Lego Mindstorms EV3 . [136]
  • Pyston - это вариант среды выполнения Python, который использует своевременную компиляцию для ускорения выполнения программ Python. [137]

Неподдерживаемые реализации [ править ]

Другие JIT-компиляторы Python были разработаны, но в настоящее время не поддерживаются:

  • Google начал проект под названием Unladen Swallow в 2009 году с целью пятикратного ускорения интерпретатора Python за счет использования LLVM и улучшения его многопоточности для масштабирования до тысяч ядер [138], в то время как обычные реализации страдают от глобальной блокировки интерпретатора. .
  • Психо является прекращено только по времени , специализирующимся компилятор (который не поддерживает Python 2.7 или более поздней версии) , которая интегрируется с CPython и преобразования байт - кода в машинный код во время выполнения. Созданный код специализируется на определенных типах данных и работает быстрее, чем стандартный код Python.
  • PyS60 был интерпретатором Python 2 для мобильных телефонов Series 60, выпущенным Nokia в 2005 году. Он реализовал многие модули из стандартной библиотеки и некоторые дополнительные модули для интеграции с операционной системой Symbian . Nokia N900 также поддерживает Python с библиотеками виджетов GTK , позволяя писать и запускать программы на целевом устройстве. [139]

Кросс-компиляторы для других языков [ править ]

Существует несколько компиляторов для объектных языков высокого уровня: либо неограниченный Python, либо ограниченное подмножество Python, либо язык, похожий на Python, в качестве исходного языка:

  • Cython компилирует (надмножество) Python 2.7 в C (в то время как полученный код также можно использовать с Python 3, а также, например, с C ++ ).
  • Nuitka компилирует Python в C ++. [140]
  • Pythran компилирует подмножество Python 3 в C ++ . [141] [142] [143]
  • Pyrex (последний выпуск в 2010 г.) и Shed Skin (последний выпуск в 2013 г.) компилируются на C и C ++ соответственно.
  • Grumpy от Google (последний выпуск в 2017 году) переводит Python 2 на Go . [144] [145] [146]
  • IronPython (в настоящее время заброшенный Microsoft) позволяет запускать программы Python 2.7 в .NET Common Language Runtime .
  • Jython компилирует Python 2.7 в байт-код Java, позволяя использовать библиотеки Java из программы Python.
  • MyHDL - это язык описания оборудования (HDL) на основе Python , который преобразует код MyHDL в код Verilog или VHDL .
  • Numba использует LLVM для компиляции подмножества Python в машинный код.
  • Brython, [147] Transcrypt [148] [149] и Pyjs (последний выпуск в 2012 году) компилируют Python в JavaScript .
  • RPython может быть скомпилирован на C и используется для создания интерпретатора Python PyPy.

Производительность [ править ]

Сравнение производительности различных реализаций Python на нечисловой (комбинаторной) рабочей нагрузке было представлено на EuroSciPy '13. [150] Производительность Python по сравнению с другими языками программирования также оценивается The Computer Language Benchmarks Game . [151]

Развитие [ править ]

Разработка Python осуществляется в основном с помощью процесса Python Enhancement Proposal (PEP), основного механизма для предложения основных новых функций, сбора комментариев сообщества по вопросам и документирования решений по проектированию Python. [152] Стиль кодирования Python рассматривается в PEP 8. [153] Выдающиеся PEP рассматриваются и комментируются сообществом Python и руководящим советом. [152]

Улучшение языка соответствует развитию эталонной реализации CPython. Список рассылки python-dev является основным форумом для разработки языка. Конкретные проблемы обсуждаются в системе отслеживания ошибок Roundup, размещенной на bugs.python.org . [154] Первоначально разработка велась в собственном репозитории исходного кода под управлением Mercurial , пока Python не переехал на GitHub в январе 2017 года. [155]

Публичные выпуски CPython бывают трех типов, в зависимости от того, какая часть номера версии увеличивается:

  • Backward-несовместимые версии, где код , как ожидается, сломать и потребность быть вручную перенесены . Увеличивается первая часть номера версии. Эти выпуски случаются нечасто - версия 3.0 была выпущена через 8 лет после 2.0.
  • Основные или «функциональные» выпуски происходят примерно каждые 18 месяцев, но с принятием ежегодной периодичности выпуска, начиная с Python 3.9, ожидается, что они будут происходить раз в год. [156] [157] Они в значительной степени совместимы, но содержат новые функции. Вторая часть номера версии увеличивается. Каждая мажорная версия поддерживается исправлениями в течение нескольких лет после выпуска. [158]
  • Выпуски исправлений [159], которые не вводят новых функций, происходят примерно каждые 3 месяца и делаются, когда достаточное количество ошибок было исправлено в апстриме с момента последнего выпуска. В этих выпусках также исправлены уязвимости системы безопасности. Третья и последняя часть номера версии увеличивается. [159]

Многие альфа-, бета-версии и релиз-кандидаты также выпускаются в качестве предварительных версий и для тестирования перед финальными версиями. Хотя для каждого выпуска есть приблизительный график, они часто откладываются, если код не готов. Команда разработчиков Python отслеживает состояние кода, выполняя большой набор модульных тестов во время разработки. [160]

Основная научная конференция по Python - PyCon . Существуют также специальные программы наставничества Python, такие как Pyladies .

Pythons 3.10 не рекомендует wstr (который будет удален в Python 3.12; это означает, что к тому времени необходимо будет изменить расширения Python [161] ), [162], а также планирует добавить в язык сопоставление с образцом . [163]

Генераторы документации API [ править ]

Инструменты, которые могут генерировать документацию для Python API, включают pydoc (доступный как часть стандартной библиотеки), Sphinx , Pdoc и его форки, Doxygen и Graphviz , среди других. [164]

Именование [ править ]

Название Python происходит от британской комедийной группы Monty Python , которой создатель Python Гвидо ван Россум наслаждался во время разработки языка. Ссылки Monty Python часто появляются в коде и культуре Python; [165] например, метасинтаксические переменные, часто используемые в литературе по Python, - это спам и яйца вместо традиционных foo и bar . [165] [166] Официальная документация Python также содержит различные ссылки на подпрограммы Monty Python. [167] [168]

Префикс Py- используется, чтобы показать, что что-то связано с Python. Примеры использования этого префикса в именах приложений Python или библиотек включают Pygame , связывания из СВД с Python (обычно используется для создания игр); PyQt и PyGTK , которые связывают Qt и GTK с Python соответственно; и PyPy , реализация Python, изначально написанная на Python.

Использует [ редактировать ]

С 2003 года Python неизменно входит в десятку самых популярных языков программирования в Индексе сообщества программистов TIOBE, где по состоянию на февраль 2021 года он является третьим по популярности языком (после Java и C ). [169] Он был выбран языком программирования года (за «самый высокий рост рейтингов за год») в 2007, 2010, 2018 и 2020 годах (единственный язык, который делал это четыре раза [170] ). [171]

Эмпирическое исследование показало, что языки сценариев, такие как Python, более продуктивны, чем обычные языки, такие как C и Java, для задач программирования, связанных с манипуляциями со строками и поиском в словаре, и определило, что потребление памяти часто было «лучше, чем у Java, а не намного хуже, чем C или C ++ ». [172]

Крупные организации, использующие Python, включают Википедию , Google , [173] Yahoo! , [174] ЦЕРН , [175] НАСА , [176] Facebook , [177] Amazon , Instagram , [178] Spotify [179] и некоторые более мелкие организации, такие как ILM [180] и ITA . [181] Социальная новостная сеть Reddit была написана в основном на Python. [182]

Python может служить языком сценариев для веб-приложений , например, через mod_wsgi для веб-сервера Apache . [183] В интерфейсе шлюза веб-сервера был разработан стандартный API для упрощения работы этих приложений. Веб-фреймворки, такие как Django , Pylons , Pyramid , TurboGears , web2py , Tornado , Flask , Bottle и Zope, поддерживают разработчиков в разработке и обслуживании сложных приложений. Pyjs иIronPython можно использовать для разработки клиентских приложений на основе Ajax. SQLAlchemy можно использовать как средство отображения данных в реляционной базе данных. Twisted - это фреймворк для программирования связи между компьютерами, который используется (например) в Dropbox .

Библиотеки , такие как NumPy , SciPy и Matplotlib позволяют эффективно использовать Python в научных вычислениях , [184] [185] с специализированными библиотеками , такими как Biopython и Astropy обеспечения функционального доменом специфичным. SageMath - это математическое программное обеспечение с интерфейсом записной книжки, программируемым на Python: его библиотека охватывает многие аспекты математики , включая алгебру , комбинаторику , числовую математику , теорию чисел и исчисления.. [186] OpenCV имеет привязки Python с богатым набором функций для компьютерного зрения и обработки изображений . [187]

Python обычно используется в искусственном интеллекте проектов и проектах машинного обучения с помощью библиотек как TensorFlow , Keras , Pytorch и Scikit учиться . [188] [189] [190] [191] Как язык сценариев с модульной архитектурой , простым синтаксисом и инструментами обработки расширенного текста Python часто используется для обработки естественного языка . [192]

Python был успешно встроен во многие программные продукты в качестве языка сценариев, в том числе в программное обеспечение для метода конечных элементов, такое как Abaqus , средство параметрического моделирования 3D, такое как FreeCAD , пакеты 3D-анимации, такие как 3ds Max , Blender , Cinema 4D , Lightwave , Houdini , Maya , modo. , MotionBuilder , Softimage , редактор визуальных эффектов Nuke , программы для создания 2D-изображений, такие как GIMP , [193] Inkscape , Scribus иPaint Shop Pro , [194] и программы нотной записи , такие как партитур и капелла . GNU Debugger использует Python как красивый принтер для отображения сложных структур, таких как контейнеры C ++. Esri продвигает Python как лучший выбор для написания скриптов в ArcGIS . [195] Он также использовался в нескольких видеоиграх, [196] [197] и был принят как первый из трех доступных языков программирования в Google App Engine , два других - Java и Go . [198]

Многие операционные системы включают Python в качестве стандартного компонента. Он поставляется с большинством дистрибутивов Linux , [199] AmigaOS 4 (с использованием Python 2.7), FreeBSD (в виде пакета), NetBSD , OpenBSD (в виде пакета) и macOS и может использоваться из командной строки (терминал). Многие дистрибутивы Linux используют установщики, написанные на Python: Ubuntu использует установщик Ubiquity , а Red Hat Linux и Fedora используют установщик Anaconda . Gentoo Linux использует Python в системе управления пакетами , Portage.

Python широко используется в индустрии информационной безопасности , в том числе при разработке эксплойтов. [200] [201]

Большая часть программного обеспечения Sugar для One Laptop per Child XO, разрабатываемого в настоящее время в Sugar Labs , написано на Python. [202] В проекте одноплатного компьютера Raspberry Pi в качестве основного языка пользовательского программирования принят Python.

LibreOffice включает Python и намеревается заменить Java на Python. Его поставщик сценариев Python является основной функцией [203], начиная с версии 4.0 от 7 февраля 2013 года.

Языки, на которые повлиял Python [ править ]

Дизайн и философия Python повлияли на многие другие языки программирования:

  • Boo использует отступ, аналогичный синтаксис и аналогичную объектную модель. [204]
  • Cobra использует отступы и аналогичный синтаксис, а в документе « Благодарности» Python первым среди языков, оказавших на него влияние, указан Python. [205]
  • CoffeeScript , язык программирования, который перекрестно компилируется с JavaScript, имеет синтаксис, вдохновленный Python.
  • ECMAScript / JavaScript заимствовал итераторы и генераторы из Python. [206]
  • GDScript , язык сценариев, очень похожий на Python, встроенный в игровой движок Godot . [207]
  • Go разработан для «скорости работы с динамическим языком, таким как Python» [208], и использует тот же синтаксис для нарезки массивов.
  • Groovy был мотивирован желанием перенести философию проектирования Python в Java . [209]
  • Julia была разработана таким образом, чтобы ее можно было «использовать для общего программирования так же, как и на Python». [26]
  • Nim использует отступы и аналогичный синтаксис. [210]
  • Создатель Ruby , Юкихиро Мацумото , сказал: «Мне нужен язык сценариев, который был бы более мощным, чем Perl, и более объектно-ориентированным, чем Python. Вот почему я решил разработать свой собственный язык». [211]
  • Swift , язык программирования, разработанный Apple, имеет синтаксис, вдохновленный Python. [212]

Методы разработки Python также были скопированы на других языках. Например, практика требования документа, описывающего обоснование и проблемы, связанные с изменением языка (в Python, PEP), также используется в Tcl , [213] Erlang , [214] и Swift. [215]

См. Также [ править ]

  • Синтаксис и семантика Python
  • pip (менеджер пакетов)
  • Дифференцируемое программирование

Ссылки [ править ]

  1. ^ «Общие вопросы по Python - документация по Python 3.9.2» . docs.python.org . Проверено 28 марта 2021 года .
  2. ^ a b Guttag, Джон В. (12 августа 2016 г.). Введение в вычисления и программирование с использованием Python: с приложением для понимания данных . MIT Press. ISBN 978-0-262-52962-4.
  3. ^ «Теперь доступно исправление Python 3.9.4» . 4 апреля 2021 . Проверено 5 апреля 2021 года .
  4. ^ «Python 3.10.0a7 теперь доступен для тестирования» . 6 апреля 2021 . Проверено 6 апреля 2021 года .
  5. ^ «Почему Python - это динамический язык, а также язык со строгой типизацией - Python Wiki» . wiki.python.org . Проверено 27 января 2021 года .
  6. ^ «PEP 483 - Теория подсказок типов» . Python.org .
  7. ^ Расширение файла .pyo было удалено в Python 3.5. См. PEP 0488.
  8. ^ Holth, Мур (30 марта 2014). «PEP 0441 - Улучшение поддержки приложений Python ZIP» . Проверено 12 ноября 2015 года .
  9. ^ "Starlark Language" . Проверено 25 мая 2019 .
  10. ^ a b "Почему вообще был создан Python?" . Общие вопросы о Python . Фонд программного обеспечения Python . Проверено 22 марта 2007 года .
  11. ^ "Справочное руководство по Ada 83 (выражение повышения)" .
  12. ^ Kuchling, Эндрю М. (22 декабря 2006). «Интервью с Гвидо ван Россумом (июль 1998 г.)» . amk.ca . Архивировано из оригинала на 1 мая 2007 года . Проверено 12 марта 2012 года .
  13. ^ a b "itertools - Функции, создающие итераторы для эффективного цикла - Документация Python 3.7.1" . docs.python.org .
  14. ^ ван Россум, Гвидо (1993). «Введение в Python для программистов UNIX / C». Материалы конференции NLUUG Najaarsconferentie (Голландская группа пользователей UNIX) . CiteSeerX 10.1.1.38.2023 . хотя дизайн C далек от идеала, его влияние на Python значительно. 
  15. ^ a b «Классы» . Учебник по Python . Фонд программного обеспечения Python . Проверено 20 февраля 2012 года . Это смесь механизмов классов, найденных в C ++ и Modula-3.
  16. ^ Лунд, Фредрик. «Звонок по объекту» . effbot.org . Проверено 21 ноября 2017 года . замените «CLU» на «Python», «запись» на «экземпляр» и «процедуру» на «функцию или метод», и вы получите довольно точное описание объектной модели Python.
  17. ^ Симионато, Микеле. «Порядок разрешения методов Python 2.3» . Фонд программного обеспечения Python. Сам метод C3 не имеет ничего общего с Python, поскольку он был изобретен людьми, работающими над Диланом, и описан в статье, предназначенной для шепелявых.
  18. ^ Kuchling, AM "Функциональное программирование HOWTO" . Документация по Python v2.7.2 . Фонд программного обеспечения Python . Проверено 9 февраля 2012 года .
  19. ^ Шеменауэр, Нил; Питерс, Тим; Хетланд, Магнус Ли (18 мая 2001 г.). «PEP 255 - Простые генераторы» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 9 февраля 2012 года .
  20. ^ Смит, Кевин Д .; Джеветт, Джим Дж .; Монтанаро, Скип; Бакстер, Энтони (2 сентября 2004 г.). «PEP 318 - Декораторы для функций и методов» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 24 февраля 2012 года .
  21. ^ «Дополнительные инструменты управления потоком» . Документация Python 3 . Фонд программного обеспечения Python . Проверено 24 июля 2015 года .
  22. ^ "CoffeeScript" . coffeescript.org .
  23. ^ "Учебник по языку программирования Genie" . Проверено 28 февраля 2020 .
  24. ^ «Perl и Python влияют на JavaScript» . www.2ality.com . 24 февраля 2013 . Дата обращения 15 мая 2015 .
  25. ^ Раушмайер, Аксель. «Глава 3: Природа JavaScript; Влияния» . О'Рейли, Говоря о JavaScript . Дата обращения 15 мая 2015 .
  26. ^ a b «Почему мы создали Джулию» . Сайт Юлии . Февраль 2012 . Дата обращения 5 июня 2014 . Нам нужно что-то столь же удобное для общего программирования, как Python [...]
  27. Ring Team (4 декабря 2017 г.). «Кольцо и другие языки» . ring-lang.net . Ring-lang .
  28. Перейти ↑ Bini, Ola (2007). Практические проекты JRuby on Rails Web 2.0: перенос Ruby on Rails на платформу Java . Беркли: АПресс. п. 3 . ISBN 978-1-59059-881-8.
  29. ^ Lattner, Крис (3 июня 2014). "Домашняя страница Криса Латтнера" . Крис Латтнер . Дата обращения 3 июня 2014 . Язык Swift является продуктом неустанных усилий команды языковых экспертов, гуру документации, ниндзя по оптимизации компиляторов и невероятно важной внутренней группы, которая предоставила отзывы, чтобы помочь усовершенствовать и опробовать идеи в боевых условиях. Конечно, он также очень выиграл от опыта, с трудом завоеванного многими другими языками в этой области, черпая идеи из Objective-C, Rust, Haskell, Ruby, Python, C #, CLU и слишком многих других, чтобы перечислить.
  30. ^ Кульман, Дэйв. «Книга Python: начало Python, продвинутый Python и упражнения на Python» . Раздел 1.1. Архивировано из оригинального (PDF) 23 июня 2012 года.
  31. ^ «О Python» . Фонд программного обеспечения Python . Проверено 24 апреля 2012 года ., второй раздел «Поклонники Python используют фразу« батареи включены »для описания стандартной библиотеки, которая охватывает все, от асинхронной обработки до zip-файлов».
  32. Россум, Гвидо Ван (20 января 2009 г.). «История Python: краткая хронология Python» . История Python . Проверено 5 марта 2021 года .
  33. Петерсон, Бенджамин (20 апреля 2020 г.). «Python Insider: Python 2.7.18, последний выпуск Python 2» . Python Insider . Проверено 27 апреля 2020 .
  34. ^ Индекс TIOBE (декабрь 2020 г.). «Индекс TIOBE на декабрь 2020 года» . TIOBE.com . Проверено 20 декабря 2020 .
  35. ^ "index | TIOBE - Компания по качеству программного обеспечения" . www.tiobe.com . Проверено 2 февраля 2021 года . Python получил награду «Язык программирования года» TIOBE! Это четвертый раз в истории, что является рекордом! Звание присуждается языку программирования, набравшему наибольшую популярность за год.
  36. ^ «Опрос разработчиков Stack Overflow 2020» . Переполнение стека . Проверено 5 марта 2021 года .
  37. ^ «Состояние экосистемы разработчиков в инфографике 2020» . JetBrains: инструменты разработчика для профессионалов и команд . Проверено 5 марта 2021 года .
  38. ^ "Индекс популярности языка программирования PYPL" . pypl.github.io . Проверено 26 марта 2021 года .
  39. ^ a b Билл Веннерс (13 января 2003 г.). «Создание Python» . Разработчик Artima . Артима . Проверено 22 марта 2007 года .
  40. Ван Россум, Гвидо (29 августа 2000 г.). "SETL (был: равнодушен к литералам диапазона)" . Python-Dev (список рассылки) . Проверено 13 марта 2011 года .
  41. Ван Россум, Гвидо (20 января 2009 г.). «Краткая хронология Python» . История Python . Проверено 20 января 2009 года .
  42. Fairchild, Карли (12 июля 2018 г.). «Гвидо ван Россум уходит с роли великодушного диктатора Пифона на всю жизнь» . Linux Journal . Проверено 13 июля 2018 .
  43. ^ "Гвидо ван Россум уходит с должности доброжелательного диктатора Python на всю жизнь | Linux Journal" . www.linuxjournal.com .
  44. ^ "Босс Python Гвидо ван Россум уходит в отставку через 30 лет" . Спрашивающий .
  45. ^ "PEP 8100" . питон . Фонд программного обеспечения Python . Дата обращения 4 мая 2019 .
  46. ^ "PEP 8100" . Фонд программного обеспечения Python . Дата обращения 4 мая 2019 .
  47. ^ «Назначение Руководящего совета: Гвидо ван Россум (срок 2020 г.)» . Обсуждения на Python.org . 27 ноября 2019.
  48. ^ Kuchling, AM; Задка, Моше (16 октября 2000 г.). «Что нового в Python 2.0» . Фонд программного обеспечения Python . Проверено 11 февраля 2012 года .
  49. ^ «Версия Python 3.0» . Фонд программного обеспечения Python . Проверено 8 июля 2009 года .
  50. Ван Россум, Гвидо (5 апреля 2006 г.). «PEP 3000 - Python 3000» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python. Архивировано из оригинала 3 марта 2016 года . Проверено 27 июня 2009 года .
  51. ^ «2to3 - Автоматический перевод кода Python 2 в 3» . docs.python.org . Проверено 2 февраля 2021 года .
  52. ^ «PEP 373 - Расписание выпуска Python 2.7» . python.org . Проверено 9 января 2017 года .
  53. ^ «PEP 466 - Улучшения сетевой безопасности для Python 2.7.x» . python.org . Проверено 9 января 2017 года .
  54. ^ "Закат Python 2" . Python.org . Проверено 22 сентября 2019 .
  55. ^ «PEP 373 - Расписание выпуска Python 2.7» . Python.org . Проверено 22 сентября 2019 .
  56. ^ «Руководство разработчика Python - Руководство разработчика Python» . devguide.python.org . Проверено 17 декабря 2019 .
  57. Ланга, Лукаш (19 февраля 2021 г.). «Python Insider: теперь доступны Python 3.9.2 и 3.8.8» . Python Insider . Проверено 26 февраля 2021 года .
  58. ^ «Портал для клиентов Red Hat - доступ к круглосуточной поддержке и знаниям» . access.redhat.com . Проверено 26 февраля 2021 года .
  59. ^ "CVE - CVE-2021-3177" . cve.mitre.org . Проверено 26 февраля 2021 года .
  60. ^ "CVE - CVE-2021-23336" . cve.mitre.org . Проверено 26 февраля 2021 года .
  61. ^ The Cain Gang Ltd. "Метаклассы Python: Кто? Почему? Когда?" (PDF) . Архивировано из оригинального (PDF) 30 мая 2009 года . Проверено 27 июня 2009 года .
  62. ^ «3.3. Имена специальных методов» . Справочник по языку Python . Фонд программного обеспечения Python . Проверено 27 июня 2009 года .
  63. ^ «PyDBC: предварительные условия метода, постусловия метода и инварианты классов для Python» . Проверено 24 сентября 2011 года .
  64. ^ «Контракты для Python» . Проверено 24 сентября 2011 года .
  65. ^ "PyDatalog" . Проверено 22 июля 2012 года .
  66. ^ «Расширение и внедрение интерпретатора Python: количество ссылок» . Docs.python.org . Дата обращения 5 июня 2020 . Поскольку Python интенсивно использует и , ему нужна стратегия, позволяющая избежать утечек памяти, а также использования освобожденной памяти. Выбранный метод называется подсчетом ссылок .malloc()free()
  67. ^ a b Hettinger, Raymond (30 января 2002 г.). «PEP 289 - Генератор выражений» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 19 февраля 2012 года .
  68. ^ «6.5 itertools - Функции, создающие итераторы для эффективного цикла» . Docs.python.org . Проверено 22 ноября +2016 .
  69. ^ a b Питерс, Тим (19 августа 2004 г.). «PEP 20 - Дзен Python» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 24 ноября 2008 года .
  70. ^ Мартелли, Алекс; Равенскрофт, Анна; Ашер, Дэвид (2005). Поваренная книга Python, 2-е издание . O'Reilly Media . п. 230. ISBN 978-0-596-00797-3.
  71. ^ «Культура питона» . ebeab . 21 января 2014. Архивировано из оригинала на 30 января 2014 года.
  72. ^ "Общие вопросы о Python" . Документация по Python v2.7.3 . Docs.python.org . Дата обращения 4 июня 2020 .
  73. ^ «15 способов, которыми Python является мощной силой в Интернете» .
  74. ^ «8.18. Pprint - Data pretty printer - Документация Python 3.8.3» . docs.python.org .
  75. ^ https://towardsdatascience.com/how-to-be-pythonic-and-why-you-should-care-188d63a5037e
  76. ^ https://docs.python-guide.org/writing/style/
  77. ^ Goodger, Дэвид. «Код как Pythonista: идиоматический Python» . Архивировано из оригинального 27 мая 2014 года . Проверено 24 марта 2009 года .
  78. ^ "Как думать как Pythonista" .
  79. ^ "Является ли Python хорошим языком для начинающих программистов?" . Общие вопросы о Python . Фонд программного обеспечения Python . Проверено 21 марта 2007 года .
  80. ^ «Мифы об отступах в Python» . Secnetix.de . Проверено 19 апреля 2011 года .
  81. ^ https://www.python.org/dev/peps/pep-0008/#indentation
  82. ^ "Python 2.5 Release" . Python.org .
  83. ^ «Основные моменты: Python 2.5» . Python.org .
  84. Ван Россум, Гвидо (22 апреля 2009 г.). «Устранение рекурсии хвоста» . Neopythonic.blogspot.be . Проверено 3 декабря 2012 года .
  85. Ван Россум, Гвидо (9 февраля 2006 г.). «Языковой дизайн - это не просто решение головоломок» . Форумы Artima . Артима . Проверено 21 марта 2007 года .
  86. ^ ван Россум, Гвидо; Эби, Филип Дж. (10 мая 2005 г.). «PEP 342 - Сопрограммы через усовершенствованные генераторы» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 19 февраля 2012 года .
  87. ^ "PEP 380" . Python.org . Проверено 3 декабря 2012 года .
  88. ^ «деление» . python.org .
  89. ^ «PEP 0465 - Специальный инфиксный оператор для матричного умножения» . python.org . Проверено 1 января 2016 года .
  90. ^ «Python 3.5.1 Release and Changelog» . python.org . Проверено 1 января 2016 года .
  91. ^ «Что нового в Python 3.8» . Проверено 14 октября 2019 года .
  92. ^ "Глава 15. Выражения - 15.21.1. Операторы числового равенства == и! =" . Корпорация Oracle . Проверено 28 августа 2016 .
  93. ^ "Глава 15. Выражения - 15.21.3. Ссылочные операторы равенства == и! =" . Корпорация Oracle . Проверено 28 августа 2016 .
  94. ^ ван Россум, Гвидо; Хеттингер, Раймонд (7 февраля 2003 г.). «PEP 308 - Условные выражения» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 13 июля 2011 года .
  95. ^ «4. Встроенные типы - документация Python 3.6.3rc1» . python.org . Проверено 1 октября 2017 года .
  96. ^ «5.3. Кортежи и последовательности - документация Python 3.7.1rc2» . python.org . Проверено 17 октября 2018 года .
  97. ^ a b «PEP 498 - Интерполяция буквальной строки» . python.org . Проверено 8 марта 2017 года .
  98. ^ "Почему" self "должно явно использоваться в определениях и вызовах методов?" . FAQ по дизайну и истории . Фонд программного обеспечения Python . Проверено 19 февраля 2012 года .
  99. ^ «Справочник по языку Python, раздел 3.3. Классические и новые классы для выпуска 2.7.1» . Проверено 12 января 2011 года .
  100. ^ "Подсказка типа для Python" . LWN.net. 24 декабря 2014 . Дата обращения 5 мая 2015 .
  101. ^ «mypy - Дополнительная статическая типизация для Python» . Проверено 28 января 2017 года .
  102. ^ «15. Арифметика с плавающей запятой: проблемы и ограничения - документация Python 3.8.3» . docs.python.org . Проверено 6 июня 2020 . Почти все машины сегодня (ноябрь 2000 г.) используют арифметику с плавающей запятой IEEE-754, и почти все платформы отображают числа с плавающей запятой Python в «двойную точность» IEEE-754.
  103. ^ Zadka, Моше; ван Россум, Гвидо (11 марта 2001 г.). «PEP 237 - Объединение длинных целых и целых чисел» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 24 сентября 2011 года .
  104. ^ «Встроенные типы» . Дата обращения 3 октября 2019 .
  105. ^ «PEP 465 - Специальный инфиксный оператор для матричного умножения» . python.org .
  106. ^ a b Задка, Моше; ван Россум, Гвидо (11 марта 2001 г.). «PEP 238 - Смена оператора подразделения» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 23 октября 2013 года .
  107. ^ "Почему этажи целочисленного деления Python" . Проверено 25 августа 2010 года .
  108. ^ "round" , Стандартная библиотека Python, выпуск 3.2, §2: встроенные функции , получено 14 августа 2011 г.
  109. ^ "round" , Стандартная библиотека Python, выпуск 2.7, §2: встроенные функции , получено 14 августа 2011 г.
  110. ^ Бизли, Дэвид М. (2009). Существенный справочник по Python (4-е изд.). п. 66 .
  111. ^ Керниган, Брайан В .; Ричи, Деннис М. (1988). Язык программирования C (2-е изд.). п. 206 .
  112. ^ Батиста, Факундо. «PEP 0327 - десятичный тип данных» . Python.org . Проверено 26 сентября 2015 года .
  113. ^ «Что нового в Python 2.6 - документация по Python v2.6.9» . docs.python.org . Проверено 26 сентября 2015 года .
  114. ^ «10 причин, по которым Питон мешает исследованиям (и несколько причин, по которым это не так) - Хойт Кёпке» . www.stat.washington.edu . Проверено 3 февраля 2019 .
  115. ^ Шелл, Скотт (17 июня 2014 г.). «Введение в Python для научных вычислений» (PDF) . Проверено 3 февраля 2019 .
  116. ^ Пиотровский, Przemyslaw (июль 2006). «Создайте среду быстрой веб-разработки для страниц сервера Python и Oracle» . Технологическая сеть Oracle . Oracle . Проверено 12 марта 2012 года .
  117. Батиста, Факундо (17 октября 2003 г.). «PEP 327 - десятичный тип данных» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 24 ноября 2008 года .
  118. ^ Эби, Phillip J. (7 декабря 2003). «PEP 333 - интерфейс шлюза веб-сервера Python v1.0» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 19 февраля 2012 года .
  119. ^ Дебилл, Эрик. «Модуль на счету» . ModuleCounts . Проверено 2 февраля 2021 года .
  120. ^ Enthought, Canopy. «Навес» . www.enoughtt.com . Проверено 20 августа +2016 .
  121. ^ «Mailman 3 Почему мы не разрешаем использование C11? - Python-Dev - python.org» . mail.python.org . Проверено 1 марта 2021 года .
  122. ^ «Проблема 35473: компилятор Intel (icc) не полностью поддерживает функции C11, включая атомику - трекер Python» . bugs.python.org . Проверено 1 марта 2021 года .
  123. ^ «4. Создание расширений C и C ++ - документация Python 3.9.2» . docs.python.org . Проверено 1 марта 2021 года .
  124. Ван Россум, Гвидо (5 июня 2001 г.). «PEP 7 - Руководство по стилю для кода C» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 24 ноября 2008 года .
  125. ^ "Байт-код CPython" . Docs.python.org . Проверено 16 февраля +2016 .
  126. ^ "Внутреннее устройство Python 2.5" (PDF) . Проверено 19 апреля 2011 года .
  127. ^ «Журнал изменений - документация Python 3.9.0» . docs.python.org . Проверено 8 февраля 2021 года .
  128. ^ "Загрузить Python" . Python.org . Проверено 13 декабря 2020 .
  129. ^ "история [vmspython]" . www.vmspython.org . Дата обращения 4 декабря 2020 .
  130. ^ "Интервью с Гвидо ван Россумом" . Oreilly.com . Проверено 24 ноября 2008 года .
  131. ^ «Загрузить Python для других платформ» . Python.org . Дата обращения 4 декабря 2020 .
  132. ^ "Совместимость с PyPy" . Pypy.org . Проверено 3 декабря 2012 года .
  133. ^ "Сравнение скорости между CPython и Pypy" . Speed.pypy.org . Проверено 3 декабря 2012 года .
  134. Шоу, Энтони (30 марта 2018 г.). "Какая версия Python самая быстрая?" . Хакерский полдень . Проверено 20 декабря 2019 .
  135. ^ «Функции Stackless на уровне приложений - документация PyPy 2.0.2» . Doc.pypy.org . Проверено 17 июля 2013 года .
  136. ^ «Python для EV3» . LEGO Education . Проверено 17 апреля 2019 года .
  137. ^ Yegulalp, Сердар (29 октября 2020). «Пайстон возвращается из мертвых, чтобы ускорить Python» . InfoWorld . Проверено 26 января 2021 года .
  138. ^ «Планы по оптимизации Python» . Хостинг проектов Google . 15 декабря 2009 . Проверено 24 сентября 2011 года .
  139. ^ «Python на Nokia N900» . Стохастическая геометрия . 29 апреля 2010 г.
  140. ^ "Nuitka Home | Nuitka Home" . nuitka.net . Проверено 18 августа 2017 года .
  141. ^ Borderies, Оливье (24 января 2019). "Pythran: Python на скорости C ++!" . Средний .
  142. ^ "Pythran - Документация Pythran 0.9.5" . pythran.readthedocs.io .
  143. ^ http://conference.scipy.org/proceedings/scipy2013/html/pdfs/guelton.pdf
  144. ^ "google / grumpy" . 10 апреля 2020 г. - через GitHub.
  145. ^ «Проекты» . opensource.google .
  146. ^ https://www.theregister.com/2017/01/05/googles_grumpy_makes_python_go/
  147. ^ "Брайтон" . brython.info . Проверено 21 января 2021 года .
  148. ^ «Transcrypt - Python в браузере» . transcrypt.org . Проверено 22 декабря 2020 .
  149. ^ https://www.infoq.com/articles/transcrypt-python-javascript-compiler/
  150. ^ Мурри, Риккардо (2013). Производительность среды выполнения Python на нечисловом научном коде . Европейская конференция по Python в науке (EuroSciPy). arXiv : 1404,6388 . Bibcode : 2014arXiv1404.6388M .
  151. ^ "Игра компьютерных тестов" . Проверено 30 апреля 2020 .
  152. ^ а б Варшава, Барри; Хилтон, Джереми; Гуджер, Дэвид (13 июня 2000 г.). «PEP 1 - Цель и рекомендации PEP» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 19 апреля 2011 года .
  153. ^ «PEP 8 - Руководство по стилю кода Python» . Python.org .
  154. ^ Кэннон, Бретт. «Гвидо, некоторые парни и список рассылки: как разрабатывается Python» . python.org . Фонд программного обеспечения Python. Архивировано из оригинала на 1 июня 2009 года . Проверено 27 июня 2009 года .
  155. ^ «Руководство разработчика Python» .
  156. ^ «PEP 602 - Годовой цикл выпуска для Python» . Python.org . Дата обращения 6 ноября 2019 .
  157. ^ "Изменение темпа выпуска Python [LWN.net]" . lwn.net . Дата обращения 6 ноября 2019 .
  158. ^ Norwitz, Нил (8 апреля 2002). «[Python-Dev] График выпуска (была стабильность и изменения)» . Проверено 27 июня 2009 года .
  159. ^ а б Ааз; Бакстер, Энтони (15 марта 2001 г.). «PEP 6 - выпуски с исправлением ошибок» . Предложения по усовершенствованию Python . Фонд программного обеспечения Python . Проверено 27 июня 2009 года .
  160. ^ "Python Buildbot" . Руководство разработчика Python . Фонд программного обеспечения Python . Проверено 24 сентября 2011 года .
  161. ^ «1. Расширение Python с помощью C или C ++ - документация Python 3.9.1» . docs.python.org . Проверено 14 февраля 2021 года .
  162. ^ «PEP 623 - Удалить wstr из Unicode» . Python.org . Проверено 14 февраля 2021 года .
  163. ^ «PEP 634 - Сопоставление структурного образца: Спецификация» . Python.org . Проверено 14 февраля 2021 года .
  164. ^ «Инструменты документации» . Python.org . Проверено 22 марта 2021 года .
  165. ^ a b «Разжигание аппетита» . Учебник по Python . Фонд программного обеспечения Python . Проверено 20 февраля 2012 года .
  166. ^ "В Python, следует ли использовать else после возврата в блоке if?" . Переполнение стека . Обмен стеками. 17 февраля 2011 . Проверено 6 мая 2011 года .
  167. Перейти ↑ Lutz, Mark (2009). Изучение Python: мощное объектно-ориентированное программирование . O'Reilly Media, Inc. стр. 17. ISBN 9781449379322.
  168. ^ Fehily, Крис (2002). Python . Peachpit Press. п. XV. ISBN 9780201748840.
  169. ^ "Индекс TIOBE" . TIOBE - Компания по качеству программного обеспечения . Проверено 26 февраля 2021 года .
  170. Блейк, автор Трой (18 января 2021 г.). «Индекс TIOBE за январь 2021 года» . Новости технологий и информация от SeniorDBA . Проверено 26 февраля 2021 года .
  171. ^ Индекс программного обеспечения TIOBE (2015). "Индекс сообщества программистов TIOBE Python" . Проверено 10 сентября 2015 года .
  172. ^ Prechelt, Lutz (14 марта 2000). «Эмпирическое сравнение языков C, C ++, Java, Perl, Python, Rexx и Tcl» (PDF) . Проверено 30 августа 2013 года .
  173. ^ «Цитаты о Python» . Фонд программного обеспечения Python . Проверено 8 января 2012 года .
  174. ^ «Организации, использующие Python» . Фонд программного обеспечения Python . Проверено 15 января 2009 года .
  175. ^ «Python: Святой Грааль программирования» . Бюллетень ЦЕРН . Публикации ЦЕРН (31/2006). 31 июля 2006 . Проверено 11 февраля 2012 года .
  176. Шафер, Дэниел Г. (17 января 2003 г.). «Python упрощает дизайн миссии космического челнока» . Фонд программного обеспечения Python . Проверено 24 ноября 2008 года .
  177. ^ «Торнадо: веб-фреймворк Facebook в реальном времени для Python - Facebook для разработчиков» . Facebook для разработчиков . Проверено 19 июня 2018 .
  178. ^ «Что движет Instagram: сотни экземпляров, десятки технологий» . Инстаграм Инжиниринг . Проверено 27 мая 2019 .
  179. ^ «Как мы используем Python в Spotify» . Spotify Labs . 20 марта 2013 . Проверено 25 июля 2018 года .
  180. ^ Фортенберри, Тим (17 января 2003). «Промышленный свет и магия работает на Python» . Фонд программного обеспечения Python . Проверено 11 февраля 2012 года .
  181. ^ Тафт, Дэррил К. (5 марта 2007 г.). «Питон проникает в системы» . eWeek.com . Зифф Дэвис Холдингс . Проверено 24 сентября 2011 года .
  182. ^ GitHub - reddit-archive / reddit: исторический код с reddit.com. , Архивы Reddit , получено 20 марта 2019 г.
  183. ^ «Статистика использования и рыночная доля Python для веб-сайтов» . 2012 . Проверено 18 декабря 2012 года .
  184. ^ Олифант, Трэвис (2007). «Python для научных вычислений» . Вычислительная техника в науке и технике . 9 (3): 10–20. Bibcode : 2007CSE ..... 9c..10O . CiteSeerX 10.1.1.474.6460 . DOI : 10,1109 / MCSE.2007.58 . S2CID 206457124 .  
  185. ^ Миллман, К. Джаррод; Айвазис, Майкл (2011). «Python для ученых и инженеров» . Вычислительная техника в науке и технике . 13 (2): 9–12. Bibcode : 2011CSE .... 13b ... 9M . DOI : 10,1109 / MCSE.2011.36 .
  186. ^ Научное образование с SageMath , Innovative Computing in Science Education , получено 22 апреля 2019 г.
  187. ^ «OpenCV: OpenCV-Python Tutorials» . docs.opencv.org . Проверено 14 сентября 2020 года .
  188. ^ Дин, Джефф ; Монга, Раджат; и другие. (9 ноября 2015 г.). «TensorFlow: крупномасштабное машинное обучение в гетерогенных системах» (PDF) . TensorFlow.org . Google Research . Проверено 10 ноября 2015 года .
  189. ^ Пятецкий, Григорий. «Python разъедает R: лучшее программное обеспечение для аналитики, обработки данных и машинного обучения в 2018 году: тенденции и анализ» . KDnuggets . KDnuggets . Проверено 30 мая 2018 .
  190. ^ «Кто использует scikit-learn? - документация scikit-learn 0.20.1» . scikit-learn.org .
  191. ^ Джуппи, Норм . «Google решает задачи машинного обучения с помощью специального чипа TPU» . Блог Google Cloud Platform . Дата обращения 19 мая 2016 .
  192. ^ «Набор средств естественного языка - документация NLTK 3.5b1» . www.nltk.org .
  193. ^ «Установщики GIMP для Windows - часто задаваемые вопросы» . 26 июля 2013 г. Архивировано из оригинала 17 июля 2013 года . Проверено 26 июля 2013 года .
  194. ^ "jasc psp9components" . Архивировано из оригинального 19 марта 2008 года.
  195. ^ «О начале написания скриптов геообработки» . Справка ArcGIS Desktop 9.2 . Институт исследования экологических систем. 17 ноября 2006 . Проверено 11 февраля 2012 года .
  196. ^ CCP porkbelly (24 августа 2010). «Безстековый Python 2.7» . Блоги разработчиков сообщества EVE . CCP Games . Как вы, возможно, знаете, в основе EVE лежит язык программирования, известный как Stackless Python.
  197. ^ Caudill, Барри (20 сентября 2005). «Модификация Цивилизации Сида Мейера IV» . Блог разработчиков Sid Meier's Civilization IV . Firaxis Games . Архивировано из оригинала на 2 декабря 2010 года мы создали три уровня инструментов ... Предложения следующего уровня Python и поддержка XML, позволяя моддеров с большим опытом манипулировать миром игры и все в нем.
  198. ^ "Руководство по языку Python (v1.0)" . API данных списка документов Google v1.0 . Архивировано из оригинала 15 июля 2010 года.
  199. ^ «Установка и использование Python» . Фонд программного обеспечения Python . Проверено 10 января 2020 года .
  200. ^ «Иммунитет: знание того, что вы в безопасности» . Архивировано из оригинального 16 февраля 2009 года.
  201. ^ «Основная безопасность» . Основная безопасность .
  202. ^ "Что такое сахар?" . Sugar Labs . Проверено 11 февраля 2012 года .
  203. ^ «4.0 Новые функции и исправления» . LibreOffice.org . Фонд документа . 2013 . Проверено 25 февраля 2013 года .
  204. ^ "Проблемы для пользователей Python" . boo.codehaus.org . Фонд Codehaus. Архивировано из оригинала 11 декабря 2008 года . Проверено 24 ноября 2008 года .
  205. ^ Эстербрук, Чарльз. «Благодарности» . cobra-language.com . Язык кобры . Проверено 7 апреля 2010 года .
  206. ^ «Предложения: итераторы и генераторы [ES4 Wiki]» . wiki.ecmascript.org. Архивировано из оригинального 20 октября 2007 года . Проверено 24 ноября 2008 года .
  207. ^ "Часто задаваемые вопросы: что такое GDScript и почему я должен его использовать?" .
  208. Кинкейд, Джейсон (10 ноября 2009 г.). «Google's Go: новый язык программирования, который соответствует Python и C ++» . TechCrunch . Проверено 29 января 2010 года .
  209. Страчан, Джеймс (29 августа 2003 г.). «Groovy - рождение нового динамического языка для платформы Java» . Архивировано из оригинала 5 апреля 2007 года . Проверено 11 июня 2007 года .
  210. ^ Yegulalp, Сердар (16 января 2017). «Язык Nim заимствует лучшее из Python, Rust, Go и Lisp» . InfoWorld . Синтаксис Nim сильно напоминает Python, поскольку он использует блоки кода с отступом и некоторые из них (например, способ построения блоков if / elif / then / else).
  211. ^ «Интервью с создателем Ruby» . Linuxdevcenter.com . Проверено 3 декабря 2012 года .
  212. ^ Lattner, Крис (3 июня 2014). "Домашняя страница Криса Латтнера" . Крис Латтнер . Дата обращения 3 июня 2014 . Я начал работу над языком программирования Swift в июле 2010 года. Я реализовал большую часть базовой структуры языка, и лишь несколько человек знали о ее существовании. Несколько других (удивительных) людей начали всерьез вносить свой вклад в конце 2011 года, и это стало основным направлением для группы Apple Developer Tools в июле 2013 года, [...] черпая идеи из Objective-C, Rust, Haskell, Ruby, Python, C #, CLU и многие другие, чтобы перечислить.
  213. ^ Куприес, Андреас; Стипендиаты, Донал К. (14 сентября 2000 г.). «СОВЕТ № 3: Формат СОВЕТА» . tcl.tk . Разработчик Tcl Xchange . Проверено 24 ноября 2008 года .
  214. ^ Густафссон, Пер; Нисканен, Раймо (29 января 2007 г.). «EEP 1: Цель и рекомендации EEP» . erlang.org . Проверено 19 апреля 2011 года .
  215. ^ «Быстрый процесс эволюции» . Репозиторий Swift Programming Language Evolution на GitHub . 18 февраля 2020 . Проверено 27 апреля 2020 .

Источники [ править ]

  • «Python для искусственного интеллекта» . Wiki.python.org. 19 июля 2012 года Архивировано из оригинала на 1 ноября 2012 года . Проверено 3 декабря 2012 года .
  • Пейн, Джоселин, изд. (Август 2005 г.). «AI в Python» . Информационный бюллетень AI Expert . Амзи !. Архивировано из оригинального 26 марта 2012 года . Проверено 11 февраля 2012 года .
  • «PyAIML 0.8.5: индекс пакета Python» . Pypi.python.org . Проверено 17 июля 2013 года .
  • Рассел, Стюарт Дж. И Норвиг, Питер (2009). Искусственный интеллект: современный подход (3-е изд.). Река Аппер Сэдл, штат Нью-Джерси: Prentice Hall. ISBN 978-0-13-604259-4.

Дальнейшее чтение [ править ]

  • Дауни, Аллен Б. (май 2012 г.). Think Python: How to Think Like a Computer Scientist (Версия 1.6.6 ред.). ISBN 978-0-521-72596-5.
  • Гамильтон, Наоми (5 августа 2008 г.). «Азия языков программирования: Python» . Компьютерный мир . Архивировано из оригинального 29 декабря 2008 года . Проверено 31 марта 2010 года .
  • Лутц, Марк (2013). Изучение Python (5-е изд.). O'Reilly Media. ISBN 978-0-596-15806-4.
  • Пилигрим, Марк (2004). Погрузитесь в Python . Апресс. ISBN 978-1-59059-356-1.
  • Пилигрим, Марк (2009). Погрузитесь в Python 3 . Апресс. ISBN 978-1-4302-2415-0.
  • Саммерфилд, Марк (2009). Программирование на Python 3 (2-е изд.). Эддисон-Уэсли Профессионал. ISBN 978-0-321-68056-3.

Внешние ссылки [ править ]

  • Официальный веб-сайт