img

Python 2 или Python 3: что лучше?

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

 

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

По состоянию на октябрь 2023 года рейтинги PYPL и TIOBE оценивают Python как самый популярный язык в мире. 

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

Однако, стоит вам остановить свой выбор на Python, как тут же возникнет еще один немаловажный вопрос: что лучше использовать в своих проектах, Python 2 или Python 3? Это один из вопросов, который волновал меня как разработчика Python, и, если вы тоже задавались таким вопросом, эта статья поможет вам сделать правильный выбор.

1. Что такое Python 2?

Python 2 и Python 3 – это две основные версии (выпуска) языка программирования Python. Первый выпуск Python 2.0 состоялся в 2000 году. В нем были реализованы функции и исправления, которые были призваны облегчить изучение Python и разработку на нем.

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

Python 2 был очень популярен и широко использовался как разработчиками, так и компаниями. Однако 1 января 2020 года Python 2 прикрыли, и его поддержка прекратилась. После этой даты в Python 2 не было внесено никаких новых исправлений. Последней версией Python 2 стал Python 2.7, который был выпущен в 2010 году.

И так как Python 2 больше не поддерживался, фокус внимания сместился на следующую основную версию языка.

2. Что такое Python 3?

Python 3 был впервые выпущен 3 декабря 2008 года. Цель его создания заключалась в устранении недостатков в структуре языка и проблем безопасности, которые присутствовали в Python 2. С Python 3 в жизнь были воплощены большие изменения и новые функции, которые позволили устранить избыточность кода, а также сделать его более читабельным.

Избыточность кода – это наличие повторяющихся фрагментов кода. Кроме прочего, Python 3 внес изменения в синтаксис языка Python. Эти изменения были настолько кардинальными, что код Python 3 стал несовместим с Python 2.

Можно предположить, что на сегодняшний день все компании и разработчики используют Python 3, но это не так. Опрос JetBrains 2022 года, проведенный среди разработчиков Python, показал, что по состоянию на 2022 год 7% разработчиков Python используют Python 2. Также опрос показал, что Python 2 в основном используется для анализа данных, компьютерной графики и DevOps.

Так как разработчики обычно работают с кодом, давайте рассмотрим некоторые примеры кода, которые отлично подчеркивают различия в синтаксисе Python 2 и Python 3, а затем уже перейдем к основным различиям между этими двумя версиями.

3. Различия в синтаксисе Python 2 и Python 3

Одно из различий между Python 2 и Python 3 заключается в том, как они выводят данные в стандартный вывод. В Python 2 print – это оператор, а в Python 3 – это функция. Примеры, представленные ниже, демонстрируют различия печати в стандартный вывод при использовании Python 2 и Python 3.

Python 2

print "Hello, World!"

Вывод:

Python 3

print("Hello, World!")

Вывод:

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

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

Python 3

Обратите внимание, что в примере ниже используется аннотация int, которое обозначает, что переменная age должна быть целым числом, а аннотация str используется для обозначения аргумента функции greet, а также типа ее возвращаемого значения.

# Type annotation - using int to indicate age is an integer 
{ # Аннотация типа – используется аннотация int, которая показывает, что переменная age должна быть целым числом }
age: int = 30

# Type annotation - str using to indicate the argument type
# and the return type of the greet() function
{ # Аннотация типа – используется аннотация str, которая указывает тип аргумента и тип возвращаемого значения функции greet() }
def greet(name: str) -> str:
    return "Hello, " + name

result = greet("Alice")
print(result)
print("Your age is " + str(age))

Вывод:

Hello, Alice
Your age is 30

Python 2

Обратите внимание, что в коде отсутствуют любые аннотации типов. Также обратите внимание на то, как выполняется печать.

age = 30;
def greet(name):
    return "Hello, " + name

result = greet("Alice")
print result
print "Your age is " + str(age)

Вывод:

Hello, Alice
Your age is 30

Еще одно различие, которые вы заметите, когда будете писать код на Python 2 и Python 3, - это результат целочисленного деления. Чтобы увидеть его, давайте выполним операцию целочисленного деления в Python 2 и Python 3:

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

Посмотрев на все эти различия в синтаксисе, что бы вы предпочли, Python 2 или Python 3? Как вы думаете, Python 3 лучше Python 2? Если вы все еще не уверены в своем ответе, давайте посмотрим на еще несколько различий между Python 2 и Python 3, чтобы вы окончательно смогли определиться.

4. Различия между Python 2 и Python 3

Ниже представлены различия между Python 2 и Python 3:

Параметр

Python 2

Python 3

Дата выпуска

16 октября 2000 года

3 декабря 2008 года

Официальная поддержка

Официальная поддержка закончилась 1 января 2020 года

В настоящее время это официально поддерживаемая версия Python

Производительность

print – это оператор, например, print “Hello, world!”

Лучшая производительность и скорость (в сравнении с Python 2) практически во всех тестах производительности

Синтаксис

Лучшая производительность и скорость (в сравнении с Python 2) практически во всех тестах производительности

Более простой синтаксис, который легко читать и понимать, избыточность практически отсутствует

Хранение строк

По умолчанию строки хранятся в кодировке  ASCII

По умолчанию строки хранятся в кодировке  UNICODE

Целочисленное деление

Деление двух целых числе дает целое число, десятичная часть отбрасывается. Например, 5/2=2

Деление двух целых числе дает значение с плавающей точкой. Например, 5/2=2.5

Ключевое слово print

print – это оператор, например, print “Hello, world!”

print – это функция, например, print(“Hello, world!”)

Аннотации типов

Нет встроенной поддержки аннотации типов

Есть встроенная поддержка аннотации типов, которая позволяет указывать тип переменных, возвращаемых значений и аргументов функции

Итерации

Итерация выполняется с помощью функции xrange()

Итерация выполняется с помощью функции range(), которая более эффективна, чем xrange()

Библиотеки

Есть встроенная поддержка аннотации типов, которая позволяет указывать тип переменных, возвращаемых значений и аргументов функции

Многие библиотеки Python 3 предназначены для работы только с Python 3 и не совместимы с Python 2. Предлагает более стандартные библиотеки.

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

Используется не так широко, так как больше не поддерживается

Широко используется разработчиками и компаниями. В настоящее время это самая популярная версия Python

 

5. Как перейти с Python 2 на Python 3?

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

Правда, проще сказать, чем сделать. Python 3 не имеет обратной совместимости с Python 2. Перенос проекта с Python 2 на Python 3 может оказаться не такой простой задачей и потребует много времени и сил в соответствии с размером проекта.

Например, Dropbox с работавшим на ни Гвидо ван Россумом – создателем языка Python, понадобилось примерно три года, чтобы успешно перейти с Python 2 на Python 3. 

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

Взгляните на зависимости вашего приложения и выясните, совместимы ли они с Python 3. Многие библиотеки уже перешли на Python 3, так что выберите зависимости, которые будут совместимы с этой версией языка.

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

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

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

6. Факторы, которые следует учитывать при выборе между Python 2 или Python 3

Выбирая с какой версией Python работать, необходимо учитывать несколько факторов.

Вот некоторые из этих факторов:

  • Уровень квалификации. Если вы только изучаете Python, используйте Python 3, так как именно его вы, скорее всего, будете использовать в работе. У вас также будет доступ к дополнительным обучающим ресурсам. Если вы опытный разработчик Python, который четко понимает, чем отличаются эти версии и чего вы ожидаете от своего проекта, вы можете использовать как Python 2, так и Python 3. Выберите ту версию, которая лучше всего подходит для вашего проекта и которая будет знакома большинству членов вашей команды.
  • Унаследованный код. Как разработчик, вы можете работать над большими кодовыми базами, которые написаны на Python 2. В определенных сценариях стоимость перехода кодовой базы на Python 3 может превысить суммарные выгоды. В таком случае, возможно, целесообразнее будет работать с Python 2.
  • Совместимость библиотек. Некоторые старые библиотеки Python 2 еще не были полностью обновлены для работы с Python 3. Если вы работаете над проектами, которые в значительной степени зависят от таких библиотек, возможно, вам лучше использовать Python 2.
  • Производительность. Если вы создаете приложение, которое требует очень высокой производительности, вам стоит выбрать Python 3. Python 3 более высокопроизводительный, нежели Python 2, а также предлагает функции, с помощью которых можно создавать более высокопроизводительные приложения. Так что, если вашему приложению требуется высокий уровень производительности, используйте Python 3, как это делают Instagram и Dropbox.
  • Большая жизнеспособность. Python 2 достиг окончания своего срока поддержки в 2020 году и с тех больше официально не поддерживается. Поэтому, если вы начинаете новый проект или сопровождаете уже существующий, целесообразнее использовать Python 3, так как эта версия будет более надежной и современной. Это связано с тем, что эта версия продолжит получать обновления и исправления. 

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

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

Заключение

Я – разработчик Python, и практически все мои проекты были написаны на Python 3. Усовершенствованная структура, лучшая производительность и надежность, более понятный синтаксис с минимальной избыточностью делают Python 3 явным победителем в этой схватке двух версий. 

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

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Программирование
Скидка 25%
Python-программист с нуля
Стань разработчиком на одном из самых популярных языков программирования.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Гипервизор - это программное обеспечение для виртуализации, используемое для создания и запуска виртуальных машин (ВМ). Гипервиз
img
Виртуализация серверов позволяет запускать несколько виртуальных машин на одном физическом сервере. Запуск виртуальных машин (ВМ
img
Сегодня мы рассмотрим, как настроить и использовать PHP в проекте. Но прежде чем начать, нужно понять, что такое PHP. Что такое
img
Как разработчик, вы знаете, что HTML расшифровывается как HyperText Markup Language (язык разметки гипертекста). HTML — это язык
img
Бесконечные споры вокруг искусственного интеллекта приводят к путанице. Существует много терминов, которые кажутся похожими, но
img
SVG расшифровывается как масштабируемая векторная графика. Это веб-дружелюбный векторный формат файлов, используемый для отображ
21 ноября
20:00
Бесплатный вебинар
Введение в Docker