Python

Python
Изображение логотипа
Семантика Императивное, процедурное, структурное программирование, ООП[1], метапрограммирование[2], функциональное[1], асинхронное программирование[3]
Класс языка Мультипарадигменный язык программирования
Тип исполнения Интерпретируемый
Появился в 20 февраля 1991[4]
Автор Гвидо ван Россум[4]
Разработчик Python Software Foundation и Гвидо ван Россум[4]
Расширение файлов .py, .pyc, .pyo (до версии 3.5)
Выпуск
Испытал влияние Алгол 68[6], ABC[7], Модула-3[8], Си[9], C++[8], Perl, Java[10], Лисп[11], Haskell[12], APL[13], Клу, Dylan, Icon и SML[13]
Лицензия Python Software Foundation License[4]
Сайт python.org (англ.)
ОС кроссплатформенность[14]
Логотип Викисклада Медиафайлы на Викискладе

Python (МФА: [ˈpʌɪθ(ə)n]; в русском языке встречаются названия пито́н[15] или па́йтон[16]) — мультипарадигмальный высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью[1][17], ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ[18]. Язык является полностью объектно-ориентированным в том плане, что всё является объектами[1]. Необычной особенностью языка является выделение блоков кода отступами[19]. Синтаксис ядра языка минималистичен, за счёт чего на практике редко возникает необходимость обращаться к документации[18]. Сам же язык известен как интерпретируемый и используется в том числе для написания скриптов[1]. Недостатками языка являются зачастую более низкая скорость работы и более высокое потребление памяти написанных на нём программ по сравнению с аналогичным кодом, написанным на компилируемых языках, таких как C или C++[1][18].

Python является мультипарадигменным языком программирования, поддерживающим императивное, процедурное, структурное, объектно-ориентированное программирование[1], метапрограммирование[2], функциональное программирование[1] и асинхронное программирование[3]. Задачи обобщённого программирования решаются за счёт динамической типизации[20][21]. Аспектно-ориентированное программирование частично поддерживается через декораторы[22], более полноценная поддержка обеспечивается дополнительными фреймворками[23]. Такие методики как контрактное и логическое программирование можно реализовать с помощью библиотек или расширений[24]. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью[1], полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений с глобальной блокировкой интерпретатора (GIL)[25], высокоуровневые структуры данных. Поддерживается разбиение программ на модули, которые, в свою очередь, могут объединяться в пакеты[26].

Эталонной реализацией Python является интерпретатор CPython, который поддерживает большинство активно используемых платформ[27], являющийся стандартом де-факто языка[28]. Он распространяется под свободной лицензией Python Software Foundation License, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные[29]. CPython компилирует исходные тексты в высокоуровневый байт-код, который исполняется в стековой виртуальной машине[30]. К другим трём основным реализациям языка относятся Jython (для JVM), IronPython (для CLR/.NET) и PyPy[1][31]. PyPy написан на подмножестве языка Python (RPython) и разрабатывался как альтернатива CPython с целью повышения скорости исполнения программ, в том числе за счёт использования JIT-компиляции[31]. Поддержка версии Python 2 закончилась в 2020 году[32]. На текущий момент активно развивается версия языка Python 3[33]. Разработка языка ведётся через предложения по расширению языка PEP (англ. Python Enhancement Proposal), в которых описываются нововведения, делаются корректировки согласно обратной связи от сообщества и документируются итоговые решения[34].

Стандартная библиотека включает большой набор полезных переносимых функций, начиная с возможностей для работы с текстом и заканчивая средствами для написания сетевых приложений. Дополнительные возможности, такие как математическое моделирование, работа с оборудованием, написание веб-приложений или разработка игр, могут реализовываться посредством обширного количества сторонних библиотек, а также интеграцией библиотек, написанных на Си или C++, при этом и сам интерпретатор Python может интегрироваться в проекты, написанные на этих языках[1]. Существует и специализированный репозиторий программного обеспечения, написанного на Python, — PyPI[35]. Данный репозиторий предоставляет средства для простой установки пакетов в операционную систему и стал стандартом де-факто для Python[36]. По состоянию на 2019 год в нём содержалось более 175 тысяч пакетов[35].

Python стал одним из самых популярных языков, он используется в анализе данных, машинном обучении, DevOps и веб-разработке, а также в других сферах, включая разработку игр. За счёт читабельности, простого синтаксиса и отсутствия необходимости в компиляции язык хорошо подходит для обучения программированию, позволяя концентрироваться на изучении алгоритмов, концептов и парадигм. Отладка же и экспериментирование в значительной степени облегчаются тем фактом, что язык является интерпретируемым[1][37]. Применяется язык многими крупными компаниями, такими как Google или Facebook[1].

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 Yogesh Rana. Python: Simple though an Important Programming language (англ.) // International Research Journal of Engineering and Technology (IRJET). — 2019. — 2 February (vol. 06, iss. 2). — P. 1856—1858. — ISSN 2395-0056. Архивировано 11 февраля 2021 года.
  2. 1 2 Satwik Kansal. Metaprogramming in Python (англ.). IBM (5 апреля 2018). Дата обращения: 14 апреля 2021. Архивировано 27 февраля 2021 года.
  3. 1 2 asyncio — Asynchronous I/O. Python documentation. Дата обращения: 9 октября 2023. Архивировано 5 мая 2019 года.
  4. 1 2 3 4 5 6 History and License - Python documentation
  5. Wouters T. Python Insider: Python 3.13.1, 3.12.8, 3.11.11, 3.10.16 and 3.9.21 are now available — 2024.
  6. https://impythonist.wordpress.com/2014/02/16/open-heart-with-guido-van-rosuuma-lost-interview-of-python-creator-part2/
  7. Why was Python created in the first place?Python Software Foundation.
  8. 1 2 Classes The Python TutorialPython Software Foundation.
  9. An Introduction to Python for UNIX/C Programmers
  10. https://peps.python.org/pep-0318/
  11. https://docs.python.org/3.2/tutorial/controlflow.html
  12. Functional Programming HOWTO
  13. 1 2 https://docs.python.org/3/library/itertools.html
  14. Download Python
  15. Мария «Mifrill» Нефёдова, Создатели языков программирования: Они такие разные, но кодинг их объединяет, Хакер № 09/08 (117). Дата обращения: 1 декабря 2012. Архивировано из оригинала 2 июля 2013 года.
  16. Прохоренок Н., Дронов В. Введение // Python 3. Самое необходимое, 2-е изд.. — БХВ-Петербург, 2019. — С. 11. — 608 с. — ISBN 9785977539944. Архивировано 12 февраля 2021 года.
  17. SkipMontanaro. Why is Python a dynamic language and also a strongly typed language - Python Wiki (англ.). wiki.python.org (24 февраля 2012). Дата обращения: 14 марта 2021. Архивировано 14 марта 2021 года.
  18. 1 2 3 Mark Lutz. A Python Q&A Session (англ.). Learning Python, 3rd Edition [Book]. O'Reilly Media, Inc. (2007). Дата обращения: 11 февраля 2021. Архивировано 8 февраля 2021 года.
  19. Python Introduction | (англ.). Python Education. Google Developers (20 августа 2018). Дата обращения: 21 февраля 2021. Архивировано 4 декабря 2020 года.
  20. Ошибка в сносках?: Неверный тег <ref>; для сносок :8 не указан текст
  21. Ошибка в сносках?: Неверный тег <ref>; для сносок :9 не указан текст
  22. Steven F. Lott. Aspect-oriented programming (англ.). Mastering Object-Oriented Python - Second Edition. Packt Publishing (2019). Дата обращения: 21 февраля 2021. Архивировано 21 февраля 2021 года.
  23. Arne Bachmann, Henning Bergmeyer, Andreas Schreiber. Evaluation of aspect-oriented frameworks in Python for extending a project with provenance documentation features (англ.) // The Python Papers. — 2011. — Vol. 6, iss. 3. — P. 1–18. — ISSN 1834-3147. Архивировано 22 апреля 2018 года.
  24. Steven Cooper. Data Science from Scratch: The #1 Data Science Guide for Everything A Data Scientist Needs to Know: Python, Linear Algebra, Statistics, Coding, Applications, Neural Networks, and Decision Trees (англ.). — Roland Bind, 2018. — 126 p. Архивировано 21 февраля 2021 года.
  25. Reuven M. Lerner. Multiprocessing in Python (англ.). Linux Journal (16 апреля 2018). Дата обращения: 14 февраля 2021. Архивировано 14 февраля 2021 года.
  26. David Beazley, Brian K. Jones. 10. Modules and Packages - Python Cookbook, 3rd Edition [Book] (англ.). Python Cookbook, 3rd Edition. O'Reilly Media, Inc. (2013). Дата обращения: 21 февраля 2021. Архивировано 21 февраля 2021 года.
  27. About Python (англ.). Дата обращения: 7 августа 2007. Архивировано 11 августа 2007 года.
  28. PythonImplementations - Python Wiki (англ.). wiki.python.org (21 июля 2020). Дата обращения: 17 февраля 2021. Архивировано 11 ноября 2020 года.
  29. History and License (англ.). Python. Дата обращения: 21 мая 2021. Архивировано 5 декабря 2016 года.
  30. Mostafa Chandra Krintz, C. Cascaval, D. Edelsohn, P. Nagpurkar, P. Wu. Understanding the Potential of Interpreter-based Optimizations for Python (англ.) // UCSB Technical Report. — 2010. — 11 August. Архивировано 23 февраля 2021 года.
  31. 1 2 Ошибка в сносках?: Неверный тег <ref>; для сносок :3 не указан текст
  32. PEP 373 -- Python 2.7 Release Schedule (англ.) (23 марта 2014). Дата обращения: 7 марта 2021. Архивировано 25 февраля 2021 года.
  33. Berk Ekmekci, Charles E. McAnany, Cameron Mura. An Introduction to Programming for Bioscientists: A Python-Based Primer (англ.) // PLOS Computational Biology. — 2016. — 6 July (vol. 12, iss. 6). — P. e1004867. — ISSN 1553-7358. — doi:10.1371/journal.pcbi.1004867. — PMID 27271528. Архивировано 16 февраля 2021 года.
  34. Kalyani Adawadkar. Python Programming - Applications and Future (англ.) // International Journal of Advance Engineering and Research Development. — 2017. — April (iss. SIEICON-2017). — P. 1—4. — ISSN 2348-447. Архивировано 15 июля 2020 года.
  35. 1 2 Ethan Bommarito, Michael James Bommarito. An Empirical Analysis of the Python Package Index (PyPI) (англ.) // Social Science Research Network. — Rochester, NY: Social Science Research Network, 2019. — 25 July. — ISSN 1556-5068. — doi:10.2139/ssrn.3426281. — arXiv:arXiv:1907.11073v2. Архивировано 9 июня 2021 года.
  36. Pratik Desai. Python Programming for Arduino (англ.). — Packt Publishing Ltd, 2015. — P. 8. — 400 p. — ISBN 978-1-78328-594-5. Архивировано 21 февраля 2021 года.
  37. Sebastian Bassi. A Primer on Python for Life Science Researchers (англ.) // PLOS Computational Biology. — 2007. — 30 November (vol. 3, iss. 11). — P. e199. — ISSN 1553-7358. — doi:10.1371/journal.pcbi.0030199. Архивировано 13 марта 2021 года.

Python

Dodaje.pl - Ogłoszenia lokalne