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

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

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

Python был создан в конце 1980-х годов и впервые выпущен в 1991 году Гвидо ван Россумом в качестве преемника языка программирования ABC . Python 2.0, выпущенный в 2000 году, представил новые функции, такие как понимание списков и систему сбора мусора с подсчетом ссылок , и был прекращен с версией 2.7 в 2020 году. [31] Python 3.0, выпущенный в 2008 году, был основным пересмотром версии язык, который не является полностью обратно совместимым, и большая часть кода Python 2 не запускается без изменений на Python 3. С окончанием жизненного цикла Python 2 (и с прекращением поддержки pip в 2021 году [32] ) только Python 3.6.x [33]и более поздние версии поддерживаются, при этом более старые версии по-прежнему поддерживают, например, Windows 7 (и старые установщики не ограничиваются 64-битной Windows).

Интерпретаторы Python поддерживаются для основных операционных систем и доступны еще для нескольких (а в прошлом поддерживали гораздо больше). Мировое сообщество программистов разрабатывает и поддерживает CPython , бесплатную эталонную реализацию с открытым исходным кодом [34] . Некоммерческая организация Python Software Foundation управляет ресурсами для разработки Python и CPython и направляет их.

По состоянию на января 2021 года , Python занимает третье место в TIOBE индекса «s большинство популярных языков программирования, за C и Java , [35] , имеющие ранее накопленные второе место и их награду по большей выгоде популярности 2020. [36]

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

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

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

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

Python 3.0 был выпущен 3 декабря 2008 года. Это была серьезная версия языка, не имеющая полной обратной совместимости . [47] Многие из его основных функций были портированные на 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] С истекшим сроком службы Python 2 поддерживается только Python 3.6.x [54] и более поздние версии .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Оператор присваивания (токен '=', знак равенства).
  • ifЗаявление, которое условно выполняет блок кода, а также elseи elif(сжатие еще-если).
  • forЗаявление, которое перебирает итератор объекта, захватив каждый элемент в локальном переменную для использования прилагаемого блока.
  • whileЗаявление, которое выполняет блок кода до тех пор , как его условие истинно.
  • tryЗаявление, которое позволяет исключения , поднятые в прилагаемом блоке коды пойманы и обработаны exceptпунктами; он также гарантирует, что код очистки в finallyблоке всегда будет запускаться независимо от того, как блок выходит.
  • raiseЗаявление, используется для повышения заданного исключения или ререйз перехваченных исключений.
  • classЗаявление, которое выполняет блок кода и присоединяет его локальное пространство имен в класс , для использования в объектно-ориентированном программировании .
  • defУтверждение, которое определяет функцию или метод .
  • withЗаявление, с Python 2.5 выпущен в сентябре 2006 года [75] , который охватывает блок кода в пределах менеджера контекста (например, приобретая замок до того , как блок кода выполняется захват и освобождение после этого, или открыть файл , а затем закрыть он), что позволяет Resource Acquisition Is Initialization (RAII) -like поведения и заменяет общую попытка / наконец идиому. [76]
  • Оператор 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>], ...
  • printЗаявление было изменено на print()функцию в Python 3.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 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 классическое деление . [99]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CPython - эталонная реализация Python. Он написан на C , соответствует стандарту C89 с несколькими избранными функциями C99 . [115] Он компилирует программы Python в промежуточный байт-код [116], который затем выполняется его виртуальной машиной . [117] CPython распространяется с большой стандартной библиотекой, написанной на смеси C и собственного Python. Он доступен для многих платформ, включая Windows (начиная с Python 3.9 установщик Python намеренно не может быть установлен в Windows 7 и 8; [118] [119] Windows XPподдерживался до Python 3.5) и большинство современных Unix-подобных систем, включая macOS (и Mac Apple M1 , начиная с Python 3.9.1, с экспериментальным установщиком) и неофициальную поддержку, например, VMS . [120] Переносимость платформ была одним из ее первых приоритетов, [121] во время периода Python 1 и 2, даже OS / 2 и Solaris поддерживались [122] поддержка с тех пор была прекращена для многих платформ.

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

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

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

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

  • Google начал проект под названием Unladen Swallow в 2009 году с целью пятикратного ускорения интерпретатора Python за счет использования LLVM и улучшения его способности многопоточности масштабироваться до тысяч ядер [129], в то время как обычные реализации страдают от глобальной блокировки интерпретатора. .
  • Психо является прекращено только по времени , специализирующимся компилятор (который не поддерживает Python 2.7 или более поздней версии) , которая интегрируется с CPython и преобразования байт - кода в машинный код во время выполнения. Созданный код специализирован для определенных типов данных и работает быстрее, чем стандартный код Python.

В 2005 году Nokia выпустила интерпретатор Python для мобильных телефонов Series 60 под названием PyS60 . Он включает многие модули из реализаций CPython и некоторые дополнительные модули для интеграции с операционной системой Symbian . Проект постоянно обновляется для работы на всех вариантах платформы S60, и доступно несколько сторонних модулей. Nokia N900 также поддерживает Python с библиотеками виджетов GTK , что позволяет писать и запускать программы на целевом устройстве. [130]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Генераторы документации Python API включают:

  • Pydoc
  • Сфинкс

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

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

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

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

С 2003 года Python неизменно входит в десятку самых популярных языков программирования в Индексе сообщества программистов TIOBE, где по состоянию на февраль 2020 года он является третьим по популярности языком (после Java и C ). [159] Он был выбран языком программирования года в 2007, 2010 и 2018 годах. [160]

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

Крупные организации, использующие Python, включают Википедию , Google , [162] Yahoo! , [163] ЦЕРН , [164] НАСА , [165] Facebook , [166] Amazon , Instagram , [167] Spotify [168] и некоторые более мелкие организации, такие как ILM [169] и ITA . [170] Социальная новостная сеть Reddit полностью написана на Python. [171]

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

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


Python обычно используется в искусственном интеллекте проектов и проектах машинного обучения с помощью библиотек как TensorFlow , Keras , Pytorch и Scikit учиться . [177] [178] [179] [180] Python как язык сценариев с модульной архитектурой , простым синтаксисом и инструментами обработки текста часто используется для обработки естественного языка . [181]

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

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

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

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

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

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

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

  • Boo использует отступ, похожий синтаксис и похожую объектную модель. [193]
  • Cobra использует отступы и аналогичный синтаксис, и в его документе " Благодарности" Python первым среди языков, оказавших на него влияние, указан. [194]
  • CoffeeScript , язык программирования, который перекрестно компилируется с JavaScript, имеет синтаксис, вдохновленный Python.
  • ECMAScript / JavaScript заимствовал итераторы и генераторы из Python. [195]
  • GDScript , язык сценариев, очень похожий на Python, встроенный в игровой движок Godot . [196]
  • Go разработан для «скорости работы с динамическим языком, таким как Python» [197], и использует тот же синтаксис для разделения массивов.
  • Groovy был мотивирован желанием перенести философию проектирования Python в Java . [198]
  • Julia была разработана таким образом, чтобы ее можно было "использовать для общего программирования, как Python". [25]
  • Nim использует отступы и аналогичный синтаксис. [199]
  • Создатель Ruby , Юкихиро Мацумото , сказал: «Мне нужен язык сценариев, который был бы более мощным, чем Perl, и более объектно-ориентированным, чем Python. Вот почему я решил разработать свой собственный язык». [200]
  • Swift , язык программирования, разработанный Apple, имеет синтаксис, вдохновленный Python. [201]

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

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

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

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

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

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

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