Python

Материал из «Знание.Вики»
Python logo and wordmark.svg

Python — это интерпретируемый, интерактивный, объектно-ориентированный язык программирования высокого уровня, созданный Гвидо ван Россумом в начале 1990-х годов. Он назван в честь телепередачи BBC «Летающий цирк Монти Пайтона»[1]. Его часто сравнивают с языками программирования Tcl, Perl, Scheme, Java и Ruby[2]. Один из самых популярных языков программирования в мире[3].

История

Python — высокоуровневый язык программирования, который был создан в конце 1980-х годов в Нидерландах. В 1989 году Гвидо ван Россум решил создать новый язык, который был основан на языке прграмиирования ABC, но с добавлением некоторых новых возможностей. Он назвал его Python, в честь популярного телешоу «Летающий цирк Монти Пайтона».

Первая версия Python, известная как Python 0.9.0, была выпущена в феврале 1991 года. Она была реализована на языке программирования АВC и работала на операционной системе Amoeba. Python был создан как универсальный язык программирования, который был прост в использовании и читаем для людей[4].

Со временем Python стал все более популярным благодаря своей простоте и гибкости. В 2000 году вышла версия Python 2.0, которая внесла некоторые ключевые изменения в язык, включая поддержку Unicode и новую систему управления памятью.

В 2008 году была выпущена версия Python 3.0, которая внесла множество изменений в язык, чтобы улучшить его синтаксис и исправить некоторые проблемы совместимости с предыдущими версиями. Однако, из-за этих изменений Python 3.0 не был обратно совместим с предыдущими версиями, что вызвало некоторые проблемы для разработчиков. Тем не менее, Python 3.0 был успешно принят сообществом разработчиков, и с тех пор он стал основным фокусом разработки Python. В настоящее время последней стабильной версией является Python 3.11, которая была выпущена в 2022 году[4].

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

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

Структура и функциональность

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

Python позволяет разбивать программу на модули, которые могут быть повторно использованы в других программах. В нём также имеется большой набор стандартных модулей, которые можно использовать в качестве основы программ. Имеются также встроенные модули, обеспечивающие такие события и элементы, как ввод/вывод файлов (I/O), различные системные функции, сокеты, программные интерфейсы к библиотекам графического интерфейса, таким как Tk, и т. д[5].

Благодаря тому, что Python является интерпретируемым языком, значительно экономится время разработки, так как для тестирования приложения не требуется компиляция и линковка. Идеология программирования на этом языке схожа с идеологией Java, и любое приложение, написанное на нем, сравнительно легко переносится на другие платформы (или операционные системы)[6].

Программы, написанные на Python, достаточно компактны и читабельны, и зачастую они короче своих аналогов, написанных на C/C++. Это объясняется тем, что:

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

Каждый модуль Python перед выполнением компилируется в код для соответствующей виртуальной машины. Этот код сохраняется для повторного использования в виде файла .pyc[7].

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

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

Портируемость

Python портирован и работает почти на всех известных платформах — от КПК до мейнфреймов. Существуют порты под Microsoft Windows, практически под все варианты UNIX (включая FreeBSD и Linux), Android[8], Plan 9, Mac OS и macOS, iPhone OS (iOS) 2.0 и выше, iPadOS, Palm OS, OS/2, Amiga, HaikuOS, AS/400, OS/390, Windows Mobile и Symbian.

По мере устаревания платформы её поддержка в основной ветви языка прекращается. Например, с версии 2.6 прекращена поддержка Windows 95, Windows 98 и Windows ME[9]. В версии 3.5 перестала поддерживаться Windows XP[10] В версии 3.9 перестала поддерживаться Windows Vista и Windows 7[11].

При этом, в отличие от многих портируемых систем, для всех основных платформ Python имеет поддержку характерных для данной платформы технологий (например, Microsoft COM/DCOM). Более того, существует специальная версия Python для виртуальной машины Java — Jython, что позволяет интерпретатору выполняться на любой системе, поддерживающей Java, при этом классы Java могут непосредственно использоваться из Python и даже быть написанными на Python. Также несколько проектов обеспечивают интеграцию с платформой Microsoft.NET, основные из которых — IronPython и Python.NET.

Арифметические операции

В Python есть обычные арифметические операторы (+, -, *, /, %), а ** — это дополнительный оператор, который используется для приращения, например, 5**3 == 125. Поведение операции деления существенно меняется с течением времени[12].

  • PВ Python 2.1 и более ранних версиях деление заимствовано из языка C. Оператор / выполняет целочисленное деление, если оба операнда являются целыми числами, и деление с плавающей точкой в противном случае. Целочисленное деление округляется до нуля, например, 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 оператор /, модифицирован таким образом, что он всегда выполняет роль деления с плавающей точкой. В более общем случае: в версиях, предшествующих Python 3.0, /представлял собой «классическое деление», тогда как в 3.0 / — это деление вещественных чисел, а // — деление с округлением вниз (до меньшего целого значения).

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

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

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

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

Использование

Уже в 2003 года Python входит в десятку самых популярных языков программирования по версии TIOBE Programming Community Index. По состоянию на сентябрь 2015 года он занимает пятую позицию. В 2007 и 2010 годах он был признан языком программирования года. Это третий по популярности язык, грамматический синтаксис которого не базируется преимущественно на языке C, как в случае с C++ и Objective-C. К сведению, C# и Java имеют лишь частичное синтаксическое сходство с C, например, использование фигурных скобок, и больше похожи друг на друга, чем на C[3].

Практика показывает, что скриптовые языки, такие как Python, более производительны, чем традиционные (C и Java), при решении таких задач программирования, как работа со строками и поиск в словарях. При этом объём используемой памяти зачастую меньше, чем в Java, и не намного больше, чем в C и C++.

К числу крупных организаций, использующих Python, относятся Google, Yahoo!, ЦЕРН, НАСА[13].

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

Такие библиотеки, как NumPy, SciPy и Matplotlib, позволяют эффективно использовать Python для научных вычислений. Sage — математическое программное обеспечение, написанное преимущественно на языке Python и охватывающее многие аспекты математики, включая алгебру, комбинаторику, теорию чисел и многое другое[14].

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

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

Python также широко используется в области информационной безопасности[15].

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

Преимущества и недостатки языка

Преимущества языка Python[16]:

  • Простота и читаемость кода: Python имеет простой и понятный синтаксис, который делает его легким для изучения и использования. Код на Python выглядит похожим на обычный английский текст, что делает его более читабельным и понятным для разработчиков.
  • Большая библиотека и экосистема: Python имеет огромную библиотеку с готовыми модулями и инструментами, которые позволяют разработчикам быстро и легко создавать различные приложения. Большое сообщество разработчиков активно поддерживает и развивает Python, что приводит к появлению новых библиотек и инструментов.
  • Переносимость: Python является переносимым языком программирования, что означает, что код, написанный на Python, может работать на разных операционных системах, таких как Windows, macOS и Linux, без необходимости внесения значительных изменений.
  • Мощные возможности: Python предлагает множество возможностей для разработки различных типов приложений, включая веб-разработку, научные вычисления, анализ данных, машинное обучение и многое другое. Python также поддерживает множество парадигм программирования, включая процедурное, объектно-ориентированное и функциональное программирование.

Недостатки языка Python[17]:

  • Низкая производительность: Python является интерпретируемым языком программирования, что означает, что он работает медленнее, чем некоторые компилируемые языки, такие как C++ или Java. Это может быть проблемой для приложений, требующих высокой производительности или обработки больших объёмов данных.
  • Ограниченная поддержка мобильной разработки: Python имеет ограниченную поддержку для мобильной разработки, по сравнению с некоторыми другими языками, такими как Swift или Kotlin. Хотя существуют фреймворки, такие как Kivy или BeeWare, которые позволяют создавать мобильные приложения на Python, они не настолько популярны и широко распространены, как фреймворки для других языков.
  • Ограниченная поддержка для многопоточности: Python имеет ограниченную поддержку для многопоточности из-за особенностей своей интерпретации. Это может быть проблемой для приложений, требующих эффективной параллельной обработки или высокой производительности на многопроцессорных системах.
  • Ограниченная поддержка для низкоуровневой разработки: Python не является лучшим выбором для разработки низкоуровневых систем, таких как драйверы устройств или операционные системы, из-за своей интерпретируемой природы и некоторых ограничений в работе с памятью и аппаратными ресурсами.

Python в России

Python является одним из самых популярных языков программирования в России. Его популярность растет с каждым годом, и он широко используется в различных областях Одной из причин популярности Python является его простота и легкость в изучении. Python имеет простой и понятный синтаксис, который делает его доступным для начинающих программистов. Благодаря этому, Python широко применяется в образовательных учреждениях, включая школы, колледжи и университеты[18].

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

Python также широко применяется в веб-разработке. Благодаря своей простоте и мощности, Python используется для создания веб-приложений, серверных приложений и веб-сайтов. Он имеет множество фреймворков, таких как Django и Flask, которые упрощают разработку веб-приложений. Python также популярен в сфере автоматизации и скриптинга. Благодаря своей простоте и возможностям работы с файлами и сетью, Python используется для создания скриптов и автоматизации повседневных задач. Он также широко применяется в системном администрировании и разработке инструментов командной строки. Язык также активно используется в разработке игр. Существуют мощные фреймворки, такие как Pygame, которые позволяют разработчикам создавать игры на Python. Python также используется в разработке игровых движков и инструментов для создания игр[19].

Примечания

  1. «Монти Пайтон»: что вам обязательно надо знать о самой знаменитой комедийной труппе в мире и ее незабвенных мемах. www.kommersant.uk. Дата обращения: 30 августа 2023.
  2. 1. A Python Q&A Session - Learning Python, 3rd Edition [Book] (англ.). www.oreilly.com. Дата обращения: 30 августа 2023.
  3. 3,0 3,1 Сменился самый популярный в мире язык программирования - CNews. CNews.ru. Дата обращения: 30 августа 2023.
  4. 4,0 4,1 4,2 Смирнов, Илья История создания языка программирования Python. magicmethod.ru. Дата обращения: 30 августа 2023.
  5. Сравнение Python и PHP: в чем разница?. webformyself.com. Дата обращения: 30 августа 2023.
  6. программист, Типичный Почему Python хорош для Data Science и разработки приложений (рус.) ?. Tproger (9 апреля 2020). Дата обращения: 30 августа 2023.
  7. Файлы .pyc, .pyd и .pyo в Python: что означают и содержат, различия и примеры (рус.) ?. Блог Python разработчика (8 мая 2021). Дата обращения: 30 августа 2023.
  8. Python on Android (англ.). www.damonkohler.com. Дата обращения: 19 декабря 2009. Архивировано 28 января 2011 года.
  9. Port-Specific Changes: Windows (англ.). Python v2.6.1 documentation. What’s New in Python 2.6. Python Software Foundation. Дата обращения: 11 декабря 2008. Архивировано 28 января 2011 года.
  10. 3. Using Python on Windows — Python 3.5.9 documentation (англ.). Python Documentation. Python Software Foundation. Дата обращения: 8 июня 2020. Архивировано 15 октября 2020 года.
  11. Drop support of Windows Vista and 7 in Python 3.9 (англ.). Дата обращения: 10 января 2021. Архивировано 4 ноября 2020 года.
  12. 12,0 12,1 Операторы и выражения в Python. Proghunter.ru - сайт о программировании на понятном языке (2023). Дата обращения: 30 августа 2023.
  13. NASA, Google, FB, Netflix - What Do They Have In Common? - LEAD (неопр.). https://thelead.io/. Дата обращения: 30 августа 2023.
  14. Самые популярные научные библиотеки Python. skine.ru. Дата обращения: 30 августа 2023.
  15. Инструменты Python для обеспечения кибербезопасности. senior.ua (15 сентября 2020). Дата обращения: 30 августа 2023.
  16. Преимущества языка Python — плюсы и минусы. Skysmart. Дата обращения: 30 августа 2023.
  17. L.M. SHavtikova. Using Python to schedule graphics // SCIENTIFIC DEVELOPMENT TRENDS AND EDUCATION. — 2019. — doi:10.18411/lj-12-2019-30.
  18. Гормалева, Наталья Python и Java стали самыми популярными языками программирования в России — опрос | Rusbase. rb.ru (24 мая 2023). Дата обращения: 30 августа 2023.
  19. ProductStar Python для разработки игр: возможности и неудачи — ProductStar на DTF. DTF (7 марта 2023). Дата обращения: 30 августа 2023.