Python 2 vs Python 3

Часто в сообществе программистов возникали споры о том, какую версию Python лучше использовать: Python 2 или Python 3.

Теперь, в 2020 году, очевидно: Python 3 - явно лучший вариант для новичков или тех, кто хочет обновить свои знания. Здесь мы рассмотрим, почему Python 3 лучше и почему большинство компаний массово переходят с Python 2 на 3.

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

Общий обзор

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

👉 Историю релизов Python по годам можно посмотреть тут.

Python 2

Выпущенный в конце 2000 года, Python 2 заявлял о более прозрачном и инклюзивном процессе разработки языка, по сравнению с предыдущими версиями Python с реализацией PEP (Python Enhancement Proposal). Техническая спецификация представляла информацию членам сообщества Python, а также описывала новые функции языка.

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

Поскольку Python 2 продолжал развиваться, было добавлено больше функций, включая объединение типов и классов Python в единую иерархию в версии Python 2.2.

Python 3

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

При разработке Python 3 основное внимание уделялось очистке кодовой базы и удалению избыточности, что оставляет возможность решать задачу лишь одним способом. Произошло изменение оператора print, теперь он стал встроенной функцией. Также было проведено улучшение способа разделения целых чисел, была предусмотрена лучшая поддержка Unicode.

Сначала Python 3 принимался медленно из-за того, что язык не был совместим с Python 2, что требовало от людей принимать решение о том, какую версию языка использовать. Кроме того, многие библиотеки пакетов были доступны только для 2-й версии, но поскольку команда разработчиков Python 3 заявила, что поддержка Python 2 заканчивается 1 января 2020 г., большая часть библиотек была перенесена на Python 3. Более широкое внедрение 3-й версии можно проследить по количеству пакетов, которые теперь обеспечивают поддержку Python 3, которая на момент написания статьи включает в себя более 360 пакетов.

Немного истории

Начнем с краткой истории Python второй и третьей версий:

  1. Python 2.0 была выпущена в 2000 году. Его последняя версия, 2.7, была выпущена в 2010 году.
  2. Python 3.0 была выпущена в 2008 году. Его новейшая версия 3.6 была выпущена в 2016 году, а версия 3.8 была доступна уже в декабре 2019 года.
  3. Хотя Python 2.7 все еще широко используется, внедрение Python 3 быстро растет. В 2016 году 71,9% проектов использовали Python 2.7, но к 2017 году показатель упал до 63,7%. Это говорит о том, что сообщество разработчиков все чаще обращается к Python 3 при разработке текущих приложений.

Основные отличия Python 2 от Python 3

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

1 Python 2 - это стандарт, а Python 3 - это будущее Поскольку Python 2 был самой популярной версией более пятнадцати лет, она все еще является актуальной среди некоторых разработчиков приложений. Но, сейчас уже все больше компаний переходят к использованию третьей версии, поэтому новичкам следует обратить внимание именно на нее. Изучение второй версии Питона на сегодняшний день уже является пустой тратой времени.

2 Python 2 и Python 3 имеют разные (иногда несовместимые) библиотеки Сегодня многие разработчики создают библиотеки исключительно для использования с третьей частью. Точно так же многие старые библиотеки, созданные для Python 2, не совместимы с последующей версией. Возможно, у вас получится портировать библиотеку 2.x на 3.x., но это может быть сложно и потребовать много времени – это определенно не уровень новичков.

3 Лучшая поддержка Unicode в Python 3 В Python 3 текстовые строки по умолчанию являются Unicode. В Python 2 строки хранятся как ASCII по умолчанию – вам нужно добавить "u" если вы захотите сохранить строки в формате Unicode в Python 2.x.

u"Hello, World!"

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

4 Python 3 улучшил целочисленное деление В Python 2, если вы пишете целое число (без цифр после десятичной точки), оно округляет ваш расчет до ближайшего меньшего целого числа:

a = 5 / 2 print a 2

Чтобы получить точный ответ, придется записать эту формулу как 5.0 / 2.0

Однако, в Python 3 выражение вернет ожидаемый результат:

b = 5 / 2 print(b) 2.5

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

5 Версии имеют разный синтаксис "print" Это всего лишь синтаксическое различие, и некоторые могут считать его не принципиальным, тем не менее, знать о нем полезно. По сути, в Python 3 оператор print был заменен функцией print (). Например, в Python 2 это:

print "Hello, World!"

,а в Python 3:

print("Hello, World!")

Если вы собираетесь изучать программирование на Python впервые, то это не должно сильно вас удивить. Но если вы ранее работали с Python 2, то изменения могут сбить вас с толку.

Почему компании переходят с 2-ой версии на 3-ю?

Как упоминалось ранее, большинство компаний все еще используют Python 2 по определенным причинам, но все больше организаций начинает переходить с 2-ой на 3-ю версию. Рассмотрим ситуацию на примере Instagram и Facebook - команды, которые перешли с Python 2 на 3 или находятся в данный момент в процессе (для определенных модулей) - и почему они решили это сделать.

Instagram В 2017 году Instagram перенес большую часть своего кода с Python 2.7 на Python 3. Причины, по которым они это сделали:

  • Python традиционно не является типизированным языком, но Python 3.5 поддерживает типизацию, что устраняет конфликты разработки при работе с новыми частями кода.
  • Каждая новая версия Python продолжает работать быстрее. Между тем, никто не работает над тем, чтобы ускорить работу Python 2.7.
  • У Python 3 поддержка сообщества работает на порядок лучше.

Facebook В настоящее время Facebook находится в процессе обновления своей инфраструктуры и систем обработки данных с Python версии 2 до Python версии 3.

Согласно данным с RealPython:

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

Это также гарантирует, что инфраструктура Facebook способна эффективно масштабироваться.

С какой версии языка мне стоит начать, если я новичок?

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

Немаловажным фактом выступает и то, что с апреля 2020 года версия 2.7 больше не будет поддерживаться, поэтому не имеет никакого смысла браться за изучение технологии, которая перестанет быть актуальной менее, чем через несколько месяцев. Факт, актуальность будет спадать постепенно, но, этот процесс неизбежен в ближайшем будущем.

В каких случаях имеет смысл изучать 2-ую версию?

И все же, существует несколько ситуаций, когда изучение второй версии необходимо:

  • Если вы хотите стать инженером DevOps и работать с такими инструментами, как Fabric или Ansible. В таком случае, вам придется работать как с Python 2, так и с 3 (поскольку некоторые части библиотек второй версии не имеют полной поддержки у Python 3).
  • Если в вашей компании имеется устаревший код, написанный на Python 2, и вам необходимо научиться поддерживать его.
  • Если у вас есть проект, который зависит от определенного стороннего программного обеспечения или библиотек, которые нельзя перенести на Python 3.

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

Если же вы уже пишете на Python 2.x, перейти на 3-ю версию поможет руководство на официальном сайте. Также существует программа, способная автоматически транслировать код 2-й версии Питона в код для Python 3 – 2to3.

😭
😕
😃
😍