Python - это мультипарадигмальный динамически типизированный многоцелевой язык программирования, разработанный для быстрого (для изучения, использования и понимания) и для обеспечения чистого и унифицированного синтаксиса. Обычно используются две похожие, но несовместимые версии Python, Python 2.7 и 3.x. Для специфичных для версии вопросов Python добавьте тег [python-2.7] или [python-3.x]. При использовании варианта или библиотеки Python (например, Jython, PyPy, Pandas, Numpy), пожалуйста, включите их в теги.

Python - это интерпретируемый, интерактивный, объектно-ориентированный, динамический и строго типизированный язык программирования, который используется для широкого спектра приложений. Он включает в себя модули, исключения, динамическую типизацию, динамические типы данных очень высокого уровня и классы. Python сочетает в себе замечательную мощь с очень четким синтаксисом. Он имеет интерфейсы ко многим системным вызовам и библиотекам, а также к различным оконным системам и расширяем в C или C ++. Он также может использоваться в качестве языка расширения для приложений, которым требуется программируемый интерфейс. Наконец, Python является переносимым: он работает во многих вариантах Unix, на Mac и в Windows 2000 и более поздних версиях.

Язык поставляется с большой стандартной библиотекой, которая охватывает такие области, как обработка строк (регулярные выражения, Unicode, вычисление различий между файлами), интернет-протоколы (HTTP, FTP, SMTP, XML-RPC, программирование POP, IMAP, CGI), разработка программного обеспечения (модульное тестирование, ведение журнала, профилирование, анализ кода Python) и интерфейсы операционной системы (системные вызовы, файловые системы, сокеты TCP / IP). Посмотрите на содержание стандартной библиотеки Python, чтобы понять, что доступно. Широкий выбор сторонних расширений также доступны. Обратитесь к индексу пакетов Python, чтобы найти интересующие вас пакеты.

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

Пример:

Программа на Python

print("hello stackoverflow")

Программа на C

#include 
int main(void) {
    printf("hello stackoverflow");
    return 0;
}

Python был изначально создан Гвидо ван Россумом и впервые выпущен в 1991 году. Гвидо Ван Россум выбрал Python в качестве рабочего названия для проекта, находясь в слегка неуважительном настроении (и будучи большим поклонником Monty Python's Flying Circus).

Две похожие, хотя и несовместимые версии Python широко используются: Python 2 (16 октября 2000 г.) и Python 3 (3 декабря 2008 г.). Пожалуйста, рассмотрите версию и реализацию, которую вы используете, когда задаете вопрос о Python.

Python поддерживает несколько парадигм программирования, включая объектно-ориентированные, императивные и функциональные стили программирования. Он имеет полностью динамическую систему типов и автоматическое управление памятью, аналогичное системам Scheme, Ruby, Perl и Tcl.

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

CPython, эталонная реализация Python, является бесплатным программным обеспечением с открытым исходным кодом. У него есть модель разработки на основе сообщества, как и почти все ее альтернативные реализации. Существует множество реализаций, более подходящих для конкретных сред или задач (см. Реализации Python на вики-сайте Python).

Философия Python кратко сформулирована в «Zen of Python», написанной Тимом Питерсом, которую можно прочитать, выполнив эту команду, в интерактивном интерпретаторе Python:

>>> import this

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

>>> from __future__ import braces
  File "", line 1
SyntaxError: not a chance
>>>

Чтобы помочь с переходом, рекомендуется использовать правильно настроенный текстовый редактор или IDE. Python поставляется с базовой IDE, называемой IDLE (python-idle), для начала. Другими популярными примерами являются благотворительная программа Vim, бесплатный GNU Emacs, Eclipse + PyDev или PyCharm. Взгляните на этот список сравнения IDE для многих других альтернатив.

Существует также руководство по стилю для Python под названием PEP 8, которое призвано сделать код Python более читабельным и последовательным. Это руководство (должно быть) соблюдается во всем сообществе разработчиков Python.

Рекомендации по тегам

Используйте тег python для всех вопросов, связанных с Python. Если вы считаете, что ваш вопрос включает проблемы, характерные для отдельных версий, используйте python-3.x или python-2.7 в дополнение к основному тегу python. Если вы считаете, что ваш вопрос может быть даже более конкретным, вы можете включить тег для конкретной версии, такой как python-3.5 или python-3.6 и т. д.

Кроме того, рассмотрите возможность включения тега для конкретной реализации (jython, pypy и т. Д.), Если вы используете другой, кроме cpython - предполагается использование cpython, если явно не указано иное.

Популярные библиотеки Python общего пользования:

  • Requests requests

    Простая библиотека Python для выполнения HTTP-запросов. Запросы продаются как «Для людей». Библиотека предназначена для упрощения и универсализации многих методов Python для выполнения HTTP-запросов таким образом, чтобы он был читабельным и простым в использовании. Такие функции, как поддержание активности и пул соединений, автоматически обрабатываются для обеспечения максимальной простоты.

  • Pillow python-imaging-library

    Pillow описывается как «дружественная ветвь» модуля Python PIL, необслуживаемой, но полезной библиотеки изображений. Библиотека использует API-интерфейсы C для обеспечения простого интерфейса Python, позволяющего модифицировать и обрабатывать файлы изображений различными способами.

  • Scrapy scrapy

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

  • Beautiful Soup beautifulsoup

    Beautiful Soup - это пакет Python для анализа документов HTML и XML. Он создает дерево синтаксического анализа для проанализированных страниц, которое можно использовать для извлечения данных из HTML, что полезно для очистки веб-страниц. Он доступен для Python 2.7 и Python 3.

  • nltk nltk

    Natural Language Toolkit, или NLTK, представляет собой платформу для создания приложений Python для работы с данными на человеческом языке и обработки предложений. Он предоставляет простые в использовании интерфейсы для более чем 50 корпоративных и лексических ресурсов, таких как WordNet, наряду с набором библиотек обработки текста для классификации, токенизации, обработки по меткам, разметки, анализа и семантического мышления, а также предоставляет оболочки для промышленного NLP библиотек.

Популярные веб-фреймворки на основе Python:

  • Django django

    Веб-фреймворк для перфекционистов (с указанием сроков). Django облегчает создание лучших веб-приложений быстрее и с меньшим количеством кода. Django - это веб-фреймворк Python высокого уровня, который способствует быстрой разработке и чистому, прагматичному дизайну. Это позволяет быстро создавать высокопроизводительные и элегантные веб-приложения. Django стремится максимально автоматизировать и придерживаться DRY (Don't Repeat Yourself) принципа.

  • Flask flask

    Flask - это легкий микро-фреймворк и сторонняя библиотека для Python, основанная на Werkzeug, Jinja 2 и добрых намерениях. Он обеспечивает монолитную структуру и не навязывает зависимости, что обеспечивает более точный контроль и большую свободу для развития.

  • Quart quart

    Quart представляет собой эволюцию API Flask для работы с Asyncio и для предоставления ряда функций, отсутствующих или невозможных в Flask.

  • Tornado tornado

    Tornado - это веб-фреймворк Python и библиотека асинхронных сетей. Используя неблокирующий сетевой ввод / вывод, Tornado может масштабировать до десятков тысяч открытых соединений, что делает его идеальным для длительных опросов, WebSockets и других приложений, требующих долговременного соединения с каждым пользователем.

  • CherryPy cherrypy

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

  • Pyramid pyramid

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

  • TurboGears turbogears

    TurboGears - это масштабируемая веб-инфраструктура, которая может перейти от настройки минимального режима к полнофункциональному веб-приложению. Он был создан в 2005 году Кевином Дангуром, а текущей разработкой TurboGears2 (turbogears2) руководит Марк Рамм. Текущий стабильный выпуск TurboGears - TurboGears 2.4.1, выпущенный 3 сентября 2019 г.

  • web.py web.py

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

  • Grok grok

    Создан на основе существующих библиотек Zope 3, но призван обеспечить более легкую кривую обучения и более гибкий опыт разработки. Grok делает это, делая упор на конвенции, а не на конфигурации и DRY (Don't Repeat Yourself).

  • Bottle bottle

    Бутылка - это быстрый, простой и легкий микро-фреймворк WSGI для Python. Он распространяется как единый файловый модуль и не имеет никаких зависимостей, кроме стандартной библиотеки Python.

  • web2py web2py

    web2py - это бесплатная полнофункциональная платформа с открытым исходным кодом для быстрой разработки быстрых, масштабируемых, безопасных и переносимых веб-приложений на основе баз данных.

  • Falcon falconframework

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

  • Twisted twisted

    Twisted - это управляемый событиями движок с открытым исходным кодом Это полезно для реализации как клиентов, так и серверов и масштабируется до крупных веб-сайтов и вплоть до встроенных устройств. Twisted облегчает реализацию пользовательских сетевых приложений.

Популярные GUI фреймворки основе Python

  • Kivy kivy

    Kivy - это ускоренная среда OpenGL ES 2 для создания новых пользовательских интерфейсов. Он поддерживает несколько платформ, а именно Windows, MacOSX, Linux, Android iOS и Raspberry Pi. Это открытый исходный код и поставляется с более чем 20 виджетов в своем наборе инструментов.

  • PyQT pyqt

    PyQT - это одна из популярных кроссплатформенных привязок Python, реализующая библиотеку Qt для среды разработки приложений Qt (принадлежит Nokia). В настоящее время PyQT доступен для Unix / Linux, Windows, Mac OSX и Sharp Zaurus. Он сочетает в себе лучшее из Python и Qt, и программист сам решает, создавать ли программу с помощью кодирования или использовать Qt Designer для создания визуальных диалогов.

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

  • Tkinter tkinter

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

  • PyGUI pygui

    PyGUI - это кроссплатформенная среда графического приложения для Unix, Macintosh и Windows. По сравнению с некоторыми другими структурами GUI, PyGUI является самым простым и легким из всех, поскольку API полностью синхронизирован с Python. PyGUI вставляет очень мало кода между платформой GUI и вашим приложением Python, поэтому отображение приложения обычно отображает естественный графический интерфейс платформы.

Популярные математические / научные вычислительные библиотеки в Python

  • NumPy numpy

    NumPy - это фундаментальный пакет для научных вычислений на Python. Он содержит среди прочего:

    • мощный N-мерный массив объектов
    • сложные (вещательные) функции
    • инструменты для интеграции кода C / C ++ и Fortran
    • полезная линейная алгебра, преобразование Фурье и возможности случайных чисел

    Эти функции также позволяют использовать NumPy в приложениях баз данных общего назначения.

  • SciPy scipy

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

  • matplotlib matplotlib

    matplotlib - это библиотека черчения для языка программирования Python и его расширения числовой математики NumPy. Он предоставляет объектно-ориентированный API для встраивания графиков в приложения, используя универсальные наборы инструментов GUI, такие как wxPython, Qt или GTK. Существует также процедурный интерфейс «pylab», основанный на конечном автомате (например, OpenGL), который очень похож на MATLAB.

  • pandas pandas

    Pandas - это библиотека с открытым исходным кодом, имеющая лицензию BSD, предоставляющая высокопроизводительные, простые в использовании структуры данных и инструменты анализа данных для языка программирования Python. Pandas объединяет функции многих других библиотек, а именно матричные операции NumPy и возможности построения графиков Matplotlib. 10 Minutes to Pandas хороший учебник для первого знакомства с Pandas.

  • theano theano

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

  • Blender blender

    Blender - это бесплатный набор 3D-анимации с открытым исходным кодом. Он поддерживает весь 3D конвейер - моделирование, такелаж, анимацию, симуляцию, рендеринг, композитинг и отслеживание движения, даже редактирование видео и создание игр.

  • scikit-learn scikit-learn

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

  • TensorFlow tensorflow

    TensorFlow - это библиотека программного обеспечения с открытым исходным кодом, разработанная командой Google Brain. Это символическая математическая библиотека, используемая в основном для приложений машинного обучения, таких как нейронные сети.

Популярные расширения C:

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

  • ctypes ctypes

    ctypes - пакет Python, который оборачивает библиотеки C .dll / .so в чистый Python

  • swig swig

    SWIG - это интерфейсный компилятор, который связывает программы, написанные на C и C ++, с такими языками сценариев, как Python.

  • cython cython

    Cython - это оптимизирующий статический компилятор как для языка программирования Python, так и для расширенного языка программирования Cython (на основе Pyrex). Это делает написание C-расширений для Python так же просто, как и сам Python.