Начиная с 1991 года, язык программирования Python считался пробелом, способом писать сценарии, которые « автоматизируют скучные вещи » (как выразилась одна популярная книга по изучению Python) или быстро прототип приложений, которые будут реализованы на других языках.
Однако за последние несколько лет Python стал первоклассным гражданином в области разработки современного программного обеспечения, управления инфраструктурой и анализа данных. Это уже не служебный язык подсобных помещений, а основная сила в создании веб-приложений и управлении системами, а также ключевой драйвер роста в области анализа больших данных и машинного интеллекта.
Содержание статьи
Ключевые преимущества Python
Успех Python вращается вокруг нескольких преимуществ, которые он обеспечивает как для начинающих, так и для экспертов.
Python прост в изучении и использовании
Количество функций в самом языке скромно, требуя относительно немного затрачиваемое время или усилия на создание ваших первых программ. Синтаксис Python разработан, чтобы быть читаемым и простым. Эта простота делает Python идеальным языком обучения и позволяет новичкам быстро его освоить. В результате разработчики тратят больше времени на размышления о проблеме, которую пытаются решить, и меньше времени на размышления о языковых сложностях или расшифровке кода, оставленного другими.
Python широко принят и поддерживается
Python является популярным и широко используемым, так как высокие рейтинги в опросах, таких как индекс Tiobe, и большое количество проектов GitHub, использующих Python, свидетельствуют. Python работает на всех основных операционных системах и платформах, а также на большинстве второстепенных. Многие крупные библиотеки и службы на основе API имеют привязки или оболочки Python, что позволяет Python свободно взаимодействовать с этими службами или напрямую использовать эти библиотеки.
Python не является «игрушечным» языком
Несмотря на то, что сценарии и автоматизация охватывают большую часть сценариев использования Python (подробнее об этом позже), Python также используется для создания программного обеспечения профессионального качества как автономные приложения, так и веб-сервисы. Python может быть не самым быстрым языком но ему не хватает скорости, он компенсирует универсальность.
Python продолжает двигаться вперед
Каждая версия языка Python добавляет полезные новые функции, чтобы идти в ногу с современными методами разработки программного обеспечения. Например, асинхронные операции и сопрограммы теперь являются стандартными частями языка, что упрощает написание приложений Python, выполняющих параллельную обработку.
Что используется в Python для
Самый базовый вариант использования для Python как язык сценариев и автоматизации. Python — это не просто замена сценариев оболочки или командных файлов; он также используется для автоматизации взаимодействий с веб-браузерами или пользовательскими интерфейсами приложений или для обеспечения и настройки системы с помощью таких инструментов, как Ansible и Salt. Но сценарии и автоматизация представляют собой лишь верхушку айсберга с Python.
G общее программирование приложений на Python
Вы можете создавать как командную строку, так и кроссплатформенный графический интерфейс приложения с Python и развертывать их как автономные исполняемые файлы. Python не имеет встроенной способности генерировать автономный двоичный файл из сценария, но сторонние пакеты, такие как cx_Freeze и PyInstaller, могут использоваться для этого.
Наука о данных и машинное обучение с Python
Сложный анализ данных стал одной из самых быстроразвивающихся областей ИТ и одним из главных примеров использования Python. Подавляющее большинство библиотек, используемых для науки о данных или машинного обучения, имеют интерфейсы Python, что делает язык наиболее популярным высокоуровневым командным интерфейсом для библиотек машинного обучения и других численных алгоритмов.
Веб-сервисы и RESTful API в Python
Собственные библиотеки Python и сторонние веб-фреймворки предоставляют быстрые и удобные способы создания всего: от простых REST API в несколько строк кода до полноценных сайтов, управляемых данными. Последние версии Python имеют сильную поддержку асинхронных операций, позволяя сайтам обрабатывать десятки тысяч запросов в секунду с правильными библиотеками.
Метапрограммирование и генерация кода в Python
В Python все на языке это объект, включая модули Python и сами библиотеки. Это позволяет Python работать как высокоэффективный генератор кода, позволяя писать приложения, которые манипулируют своими собственными функциями и обладают возможностью расширения, которую было бы трудно или невозможно реализовать в других языках.
Python также может использоваться для управления системами генерации кода, такими как LLVM, для эффективного создания кода на других языках.
«Клеевой код» в Python
Python часто называют «клеем». язык », означающий, что он может позволить разрозненному коду (обычно библиотекам с интерфейсами языка C) взаимодействовать. Его использование в науке о данных и машинном обучении находится в том же духе, но это только одно воплощение общей идеи. Если у вас есть приложения или программные домены, которые вы хотели бы подключить, но не можете общаться друг с другом напрямую, вы можете использовать Python для их подключения.
Где Python не хватает
Также стоит отметить виды задач, для которых Python не подходит .
Python — это язык высокого уровня, поэтому он не подходит для программирования на системном уровне — отсутствуют драйверы устройств или ядра ОС
Он также не идеален для ситуаций, когда требуются кроссплатформенные автономные двоичные файлы. Вы можете создать автономное приложение Python для Windows, MacOS и Linux, но не элегантно или просто.
Наконец, Python — не лучший выбор, когда скорость является абсолютным приоритетом во всех аспектах приложения. Для этого вам лучше использовать C / C ++ или другой язык такого уровня.
Как Python делает программирование простым
Синтаксис Python предназначен для чтения и очистки, без малейших притязаний. Стандартный «привет мир» в Python 3.x — это не что иное, как:
print («Привет, мир!»)
Python предоставляет множество синтаксических элементов для краткого выражения многих общих программных потоков. Рассмотрим пример программы для чтения строк из текстового файла в объект списка, чередуя каждую строку своего завершающего символа новой строки по пути:
с открытым ('myfile.txt') как my_file:
file_lines = [x.rstrip(‘n’) for x in my_file]
Конструкция с / as
является менеджером контекста который обеспечивает эффективный способ создания объекта для блока кода и последующей утилизации это за пределами этого блока. В этом случае объектом является my_file
экземпляр которого создается с помощью функции open ()
. Это занимает место нескольких строк шаблона, чтобы открыть файл, прочитать отдельные строки из него, а затем закрыть его.
Конструкция [x … for x in my_file]
— это еще одна особенность Python, составление списка . Это позволяет элементу, который содержит другие элементы (здесь my_file
и содержащиеся в нем строки), проходить итерацию, и позволяет обрабатывать каждый повторяющийся элемент (то есть каждый x
) и автоматически добавляется в список.
Вы могли бы написать такую вещь, как формальный цикл для ...
в Python, так же, как вы это делали бы на другом языке. Дело в том, что в Python есть способ экономически выразить такие вещи, как циклы, которые выполняют итерации по нескольким объектам и выполняют простую операцию над каждым элементом в цикле, или работать с вещами, которые требуют явного создания и удаления.
Конструкции таким образом, разработчики Python позволяют сбалансировать краткость и удобочитаемость.
Другие языковые функции Python предназначены для дополнения общих случаев использования. Большинство современных типов объектов — например, строки Unicode — встроены непосредственно в язык. Структуры данных, такие как списки, словари (т. Е. Хэш-карты или хранилища значений ключей), кортежи (для хранения неизменяемых коллекций объектов) и наборы (для хранения коллекций уникальных объектов) — доступны в качестве элементов стандартного выпуска.
Python 2 против Python 3
Python доступен в двух версиях, которые достаточно разные, чтобы сбить с толку многих новых пользователей. Python 2.x, более старая «унаследованная» ветка, будет продолжать поддерживаться (то есть получать официальные обновления) до 2020 года, и после этого она может сохраниться неофициально. Python 3.x, текущее и будущее воплощение языка, имеет много полезных и важных функций, которых нет в Python 2.x, таких как новые функции синтаксиса (например, «оператор моржа»), улучшенные средства управления параллелизмом и более эффективный интерпретатор.
Принятие Python 3 было замедлено в течение длительного времени из-за относительного отсутствия поддержки сторонних библиотек. Многие библиотеки Python поддерживают только Python 2, что затрудняет переключение. Но за последние пару лет количество библиотек, поддерживающих только Python 2, сократилось; все самые популярные библиотеки теперь совместимы как с Python 2, так и с Python 3. Сегодня Python 3 — лучший выбор для новых проектов; нет причин выбирать Python 2, если у вас нет выбора. Если вы застряли с Python 2, у вас есть различные стратегии.
Библиотеки Python
Успех Python основывается на богатой экосистеме программного обеспечения первого и стороннего производителя. Python обладает преимуществами как сильной стандартной библиотеки, так и обширного ассортимента легко доступных и легко используемых библиотек сторонних разработчиков. Python был обогащен десятилетиями расширения и вклада.
Стандартная библиотека Python предоставляет модули для общих задач программирования — математики, обработки строк, доступа к файлам и каталогам, работы в сети, асинхронных операций, потоков, многопроцессного управления и т. Д. , Но он также включает модули, которые управляют общими задачами программирования высокого уровня, необходимыми для современных приложений: чтение и запись структурированных файловых форматов, таких как JSON и XML, манипулирование сжатыми файлами, работа с интернет-протоколами и форматами данных (веб-страницы, URL-адреса, электронная почта). Практически любой внешний код, который предоставляет C-совместимый интерфейс сторонних функций, доступен с помощью модуля Python ctypes
.
Дистрибутив Python по умолчанию также предоставляет элементарную, но полезную кроссплатформенную библиотеку графического интерфейса пользователя. через Tkinter и встроенную копию базы данных SQLite 3.
Тысячи сторонних библиотек, доступных через Индекс пакетов Python (PyPI), представляют собой самую убедительную демонстрацию популярности и универсальности Python.
Например:
- Библиотека BeautifulSoup предоставляет набор инструментов «все в одном» для очистки HTML — даже хитрого, сломанного HTML — и извлечения данных из него.
- Запросы делают работу с HTTP-запросами в масштабе безболезненной и простой.
- Фреймворки, такие как Flask и Django, позволяют быстро разрабатывать веб-сервисы, охватывающие как простые, так и расширенные варианты использования.
- Управление несколькими облачными сервисами может осуществляться через объектную модель Python с использованием Apache Libcloud.
- NumPy, Pandas и Matplotlib ускоряют математические и статистические операции и упрощают создание визуализаций данных.
Компромиссы Python
Подобно C #, Java и Go, Python имеет систему управления сборкой мусора, что означает, что программисту не нужно реализовывать код для отслеживания и освобождения объектов. Обычно сборка мусора происходит автоматически в фоновом режиме, но если это создает проблему с производительностью, вы можете запустить ее вручную или полностью ее отключить, или объявить целые области объектов, освобожденных от сбора мусора, как повышение производительности.
An Важным аспектом Python является его динамизм . Все в языке, включая сами функции и модули, обрабатываются как объекты. Это происходит за счет скорости (подробнее об этом позже), но значительно упрощает написание высокоуровневого кода. Разработчики могут выполнять сложные манипуляции с объектами с помощью всего лишь нескольких инструкций и даже рассматривать части приложения как абстракции, которые могут быть изменены при необходимости.
Использование Python значительного пробела цитируется как оба один из лучших и худших атрибутов Python. Отступы во второй строке ниже не только для удобства чтения; это часть синтаксиса Python. Интерпретаторы Python отклонят программы, которые не используют правильные отступы для указания потока управления.
с открытым ('myfile.txt') значением my_file:
file_lines = [x.rstrip(‘n’) for x in my_file]
Синтаксический пробел может вызвать морщины носа, и некоторые люди отвергают Python по этой причине. Но строгие правила отступов на практике гораздо менее навязчивы, чем могут показаться теоретически, даже с самыми минимальными из редакторов кода, и в результате получается более чистый и читаемый код.
Еще один потенциальный поворот, особенно для те, которые приходят из языков, таких как C или Java, — это то, как Python обрабатывает типизацию переменных. По умолчанию Python использует динамическую или «утиную» типизацию — отлично подходит для быстрого кодирования, но потенциально проблематична для больших баз кода. Тем не менее, в Python недавно добавлена поддержка необязательного хинтинга типов во время компиляции, поэтому его могут использовать проекты, которые могут выиграть от статической типизации.
Является ли Python медленным? Не обязательно
Одно распространенное замечание о Python — это то, что он медленный. Объективно это правда. Программы на Python обычно работают намного медленнее, чем соответствующие программы на C / C ++ или Java. Некоторые программы на Python будут медленнее на порядок или более.