Python

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 22:29, 8 июня 2016.
Python
fraimed
Парадигма мультипарадигмальный: объектно-ориентированный, рефлективный, императивный, функциональный, аспектно-ориентированный, динамический
Печать дисциплины строгая, динамическая
Портал: www.python.org
Главная реализация
CPython, Jython, IronPython, PyPy, Stackless
Влияние
Ruby, Boo, Groovy, ECMAScript, CoffeeScript, Swift

Python (произносится [ ˈpaɪ.θən ] )является широко используемым языком программирования общего назначения, высокого уровня. Его философия дизайна подчеркивает читаемость кода, а его синтаксис позволяет программистам, выразить понятия в меньшем количестве строк кода, чем было бы возможно в таких языках, как С ++ или Java. Язык обеспечивает конструкции, предназначенные для того, чтобы программы были четкие на обоих малых и больших масштабах.

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

Компиляторы Python имеются для установки на многих операционных системах, что позволяет выполнять код Python на самых разнообразных систем. Использование сторонних инструментов, таких как py2exe или Pyinstaller. Python код может быть собран в автономный исполняемый файл для некоторых из самых популярных операционных систем, что позволяет распространение программного обеспечения Python основе для использования на этих средах, не требуя установка интерпретатора Python.

CPython, ссылка реализация Python, является свободное и открытое программное обеспечение и имеет модель развития общин, как это делают почти все его альтернативные реализации. CPython управляется некоммерческой компанией Python Software Foundation.

История

Гвидо ван Россум, создатель Python Python был задуман в конце 1980-х годов, и его реализация была начата в декабре 1989 года Гвидо ван Россум в CWI в Нидерландах в качестве преемника языка ABC (сам вдохновлен Setl) способны исключением обработки и взаимодействия с операционной системой Amoeba. Ван Россум основной автор Python, и его продолжения центральная роль в принятии решения о направлении Python отражается в названии данного ему сообщества Python, великодушный диктатор для жизни (BDFL) ,

О происхождении Python, Ван Россум написал в 1996 году:

Более шести лет назад, в декабре 1989 года, я искал "хобби" программирования проекта, который будет держать меня оккупированных в течение недели вокруг Рождества. Мой офис ... будет закрыт, но у меня был домашний компьютер, и не более того на руках. Я решил написать интерпретатор для сценариев нового языка о котором я думал в последнее время : потомок ABC, что бы обратиться к Unix / C хакеров. Я выбрал Python в качестве рабочего названия для проекта, будучи в слегка непочтительный настроения (и большой поклонник Летающий цирк Монти Пайтона).

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

Python 3.0 (также называемый Python 3000 или py3k), фаворит, в обратном направлении-несовместимые релиз был выпущен на 3 декабря 2008 года, после длительного периода тестирования. Многие из его главных особенностей были портированном к обратной совместимости Python 2.6 и 2.7.

Особенности и философия

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

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

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

Ядро философия языка обобщены в документе "PEP 20 (Дзен Python)", который включает в себя афоризмы, такие как:

  • Красивая лучше, чем уродливые
  • Явное лучше, чем неявное
  • Простое лучше сложного
  • Комплекс лучше, чем сложнее
  • Читаемость на счету

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

Предлагая выбор в кодировании методологии, философии Python отвергает буйный синтаксис, например, в Perl, в пользу редкого, менее хаотичную грамматику. Как Алекс Мартелли выразился: "Для того, чтобы описать что-то же умный не считается комплиментом в культуре Python." Философия Пайтона отвергает Perl "Есть более одного способа сделать это" подход к разработке языков в пользу " должен быть один и, желательно, только один очевидный способ сделать это ".

Разработчики языка Python стремиться избегать преждевременной оптимизации, и, кроме того, отвергают патчи для некритических частей CPython, что бы предлагают незначительное увеличение в скорости на стоимости ясности. Когда важна скорость, программист Питона может двигаться критичные по времени Функции модулей расширения, написанные на языках, таких как C, или попробуйте использовать PyPy, компилятор точно в срок. CPython также доступен, который переводит сценарий Python в С и делает прямое API C-уровня призывает в интерпретатор Python.

Важной задачей разработчиков Python сделать Python инстересным в использовании. Это нашло свое отражение в происхождении названия, которое происходит от Monty Python, и иногда игривый подход к учебники и справочным материалам, такие как использование примеров, которые относятся к spam и eggs вместо стандартных Foo и bar.

Общий неологизм в сообществе Python является вещий, которые могут иметь широкий диапазон значений, связанных с стилем программы. Сказать, что это вещий код означает, что он использует Python идиомы хорошо, что это естественно или показывает свободное владение языком, что он соответствует философии и минимализма акцентом Пайтона на читаемость. В отличие от этого, код, который трудно понять или читает, как грубое транскрипции из другого языка программирования называется unpythonic.

Люди и поклонники Python, особенно тех, которые считаются осведомленными или опытными-часто называют Pythonists, Pythonistas и Pythoneers.

Синтаксис и семантика

Python предназначен, чтобы быть очень читаемым языком. Он предназначен, чтобы иметь лаконичную визуальный макет, часто используя английские ключевые слова там, где другие языки использовать знаки препинания. Кроме того, Python имеет меньшее число синтаксических исключений и особых случаев, чем C или Pascal.

Идентификаторы

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

Операторы

Набор операторов достаточно традиционен. Вот некоторые из них:

  • условный оператор if (если). Альтернативный блок после else (иначе). Если условий и альтернатив несколько, можно использовать elif (сокр. от else if).
  • операторы цикла while (пока) и for (для). Внутри цикла возможно применение break и continue для прерывания цикла и перехода сразу к следующей итерации соответственно.
  • оператор определения класса class.
  • оператор определения функции, метода или генератора def. Внутри возможно применение return (возврат) для возврата из функции или метода, а в случае генератора — yield (давать).
  • оператор обработки исключений try — except — else или try — finally (начиная с версии 2.5, можно использовать finally, except и else в одном блоке).
  • оператор pass ничего не делает. Используется для пустых блоков кода.

Одной из интересных синтаксических особенностей языка является выделение блоков кода с помощью отступов (пробелов или табуляций), поэтому в Python отсутствуют операторные скобки begin/end, как в языке Паскаль, или фигурные скобки, как в Си. Такой «трюк» позволяет сократить количество строк и символов в программе и приучает к «хорошему» стилю программирования. С другой стороны, поведение и даже корректность программы может зависеть от начальных пробелов в тексте. Некоторым такое поведение может показаться неинтуитивным и неудобным.

Выражения

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

  • Сложение, вычитание, умножение и те же, но поведение деления отличается (см Математика для деталей). Python также добавил оператор ** для возведения в степень.
  • По Python 3.5, он поддерживает матричное умножение непосредственно оператором @ в отличие от C и Java, реализующие эти функции как библиотечные. Более ранние версии Python также использовали методы вместо оператора инфиксной.
  • В Python, == сравнивает по значению, в отличие от Java, где он сравнивает посредством ссылки. (Сравнение значений в Java использовать equals() метод.) В Python is оператор может быть использован для сравнения объекта тождества (сравнение по ссылке). Сравнения могут быть соединены, например, a <= b <= c.
  • Python использует слова and, or, not как его логические операторы, а не символьные &&, ||, ! используется в Java и C.
  • Python имеет тип выражения называют список понимание. Python 2.4 расширена списочные в более общем выражении называется выражение генератора.
  • Анонимные функции реализуются с помощью лямбда-выражения; Однако, они ограничены тем, что телом может быть только одно выражение.
  • Условные выражения в Python написаны так, как x if c else y (иначе для того, операндов из: оператор ?: общим для многих других языках).
  • Python делает различие между списками и кортежей. Списки записываются в виде [1, 2, 3], могут изменяться, и не могут быть использованы в качестве ключей словарей (словарь ключи должны быть неизменными в Python). Кортежи записываются в виде (1, 2, 3), являются неизменными и поэтому может быть использован в качестве ключей словаря, при этом все элементы кортежа неизменны. Скобки вокруг кортежа являются обязательными в некоторых контекстах. Кортежи могут появиться на левой стороне знака равенства; следовательно, заявление, как x, y = y, x может быть использован для замены двух переменных.
  • Python имеет "формат строки" оператор %. Эти функции, аналогичные printf строк формата в C, например, "foo=%s bar=%d" % ("blah", 2) оценивает на "foo=blah bar=2". В Python 3 и 2.6+, это была дополнена методом format() класса str , например "foo={0} bar={1}".format("blah", 2).
  • Python имеет различные виды строковых литералов:
    • Строки ограничиваются одинарными или двойными кавычками. В отличие от Unix снарядов, Perl и Perl-повлиявших языках, одинарные кавычки и двойные кавычки функционируют одинаково. Оба вида строки использовать обратную косую черту (\) в качестве экранирующего символа, и нет никаких неявных строка интерполяции, таких как "$foo".
    • Тройные кавычках, которые начинаются и заканчиваются с серией тремя односпальными или двойные кавычки. Они могут занимать несколько строк и функционировать как здесь документов в оболочках, Perl и Ruby.
    • Сроковые строки сорта, обозначенные префиксом строки буквальный с r. Нет управляющие последовательности не интерпретируются; следовательно, сырье строки полезно, когда в буквальном смысле обратные косые черты являются общими, например, регулярных выражений и путей Окна-стиль. Сравнить "@ -quoting" в C #.
  • Python имеет индекс и ломтик выражения в списках, обозначаемые как a[key], a[start:stop] или a[start:stop:step]. Индексы с нуля, и отрицательные показатели по сравнению с конца. Ломтики принять элементы из индекса старт до, но не включая, индекс стоп. Третий параметр ломтик, называется шагом или шаг, позволяет элементы должны быть пропущены и обратить вспять. Slice индексы могут быть опущены, например, a[:] возвращает копию всего списка. Каждый элемент срез неполную копию.

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

  • List comprehensions vs. for-циклы
  • Conditional expressions vs. if блок
  • eval() против exec() встроенные функции (в Python 2, exec является заявление); бывший для выражения, последний для отчетности.

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

Методы

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

Ввод

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

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

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

Summary of Python 3's built-in types
Тип Mutable Описание Пример
str Immutable Строка символов Последовательность Unicode кодов . 'Wikipedia'

"Wikipedia" """Spanning multiple lines"""

bytearray Mutable Последовательность байт bytearray(b'Some ASCII')

bytearray(b"Some ASCII") bytearray([119, 105, 107, 105])

bytes Immutable Последовательность байт. b'Some ASCII'

b"Some ASCII" bytes([119, 105, 107, 105])

list Mutable Списки, могут содержать смешанные типы [4.0, 'string', True]
tuple Immutable Может содержать смешанные типы. (4.0, 'string', True)
set Mutable Неупорядоченный набор, не содержит дубликатов. Может содержать смешанные типы до тех пор, пока они хэшируемы. {4.0, 'string', True}
frozenset Immutable Неупорядоченный набор, не содержит дубликатов. Может содержать смешанные типы до тех пор, пока они хэшируемы. frozenset([4.0, 'string', True])
dict Mutable Ассоциативный массив (или словарь) из парных ключей и значений.Может содержать смешанные типы (ключи и значения). Ключи должны быть хэшируемого типа {'key1': 1.0, 3: False}
int Immutable Число неограниченного масштаба 42
float Immutable Число с плавающей точкой (точность определяется системой). 3.1415927
complex Immutable Комплексное число с действительной и мнимой частью. 3+2.7j
bool Immutable Логическая переменная True

False

ellipsis Многоточие заполнитель для использования в качестве индекса в массивах NumPy. ...

Библиотеки

Python имеет большую стандартную библиотеку, обычно упоминается как один из самых сильных в языке Python, обеспечивающие инструменты подходят для многих задач. Это преднамеренное и был описан как "батареи, включенных" философии Python. Для интернет-приложений перед, большое количество стандартных форматов и протоколов (например, MIME и HTTP) поддерживаются. Модули для создания графических пользовательских интерфейсов, подключения к реляционных баз данных, генераторы псевдослучайных чисел, арифметике с произвольной точностью знаков после запятой, манипулирования регулярных выражений, и делает модульное тестирование, также включены.

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

Стандартная библиотека не является необходимым для запуска Python или вставлять Python в приложении. Blender 2.49, например, опускает большую часть стандартной библиотеки.

По состоянию на январь 2016 года, Питон индекс Пакет, официальный репозиторий стороннего программного обеспечения для Python, содержит более 72000 пакетов, предлагающих широкий спектр функциональных возможностей, в том числе:

  • графические пользовательские интерфейсы, веб-рамки, мультимедиа, базы данных, сети и коммуникации
  • тест рамки, автоматизация и веб-соскоб, инструменты документации, системное администрирование
  • научных вычислений, обработки текста, обработка изображений

Применение

Начиная с 2003 года, Python неизменно занимает десятку самых популярных языков программирования, измеряемых по программированию TIOBE Index сообщество. По состоянию на сентябрь 2015 года, он находится в пятой позиции. Это оценивается как язык программирования года на 2007 и 2010 года это третий самый популярный язык, чья грамматическая синтаксис не преимущественно на основе C , например С ++, Objective-C (примечание, C # и Java только частичное синтаксическое сходство с С, например, с использованием фигурных скобок, и ближе по сходству друг к другу, чем C).

Эмпирические исследования показали, языки сценариев (такие, как Python) более производительные, чем обычные языки (например, C и Java) для задачи программирования с участием строками и поиск в словаре. Потребление памяти часто был "лучше, чем Java, а не намного хуже, чем С или С ++".

Простой в использовании сопряжения между Python и C ++ можно получить, используя импульс, Python библиотеки.

Крупные организации, которые используют Python включают в себя Google, Yahoo!, CERN, NASA, и некоторые мелкие, как ILM, и ITA.

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

Библиотеки, как NumPy, SciPy и Matplotlib позволяют эффективно использовать Python в научных вычислений, со специализированными библиотеками, такими как BioPython и Astropy обеспечения функциональных предметно-ориентированный. Astropy является математическое обеспечение с «блокнот» программируется в Python: его библиотека охватывает многие аспекты математики, в том числе алгебры, комбинаторики, вычислительной математики, теории чисел, и исчисления.

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

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

Многие операционные системы включают Python в качестве стандартного компонента; языковые поставляется с большинством дистрибутивов Linux, AmigaOS 4, FreeBSD, NetBSD, OpenBSD и OS X, и может быть использован с терминала. Ряд дистрибутивов использовать инсталляторов, написанных на Python: Ubuntu использует установщик Ubiquity, в то время как Red Hat Linux Fedora и использовать установки Anaconda. Gentoo Linux использует Python в своей системе управления пакетами, Portage.

Питон также видел широкое применение в промышленности информационной безопасности, в том числе в разработки эксплойтов.

Большая часть программного обеспечения Sugar для One Laptop Per Child XO, в настоящее время разработана в Sugar Labs, написана в Python.

Сингл бортовой компьютер Raspberry Pi проект принял Python в качестве своей основной язык пользовательского программирования.

LibreOffice включает в себя Python и намерен заменить Java с Python. Python скриптов Провайдер основной особенностью, начиная с версии 4.0 от 7 февраля 2013 года.

Ссылки