Python 2 vs Python 3: краткий обзор и практические соображения

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

Python является мультипарадигмальным языком программирования (это значит, что он поддерживает несколько стилей программирования, включая объектно-ориентированное программирование и написание сценариев), а потому его можно применить в разработке практически любого проекта. Python всё чаще используется в промышленности такими организациями, как United Space Alliance (главная поддержка шаттлов НАСА) и Industrial Light & Magic (студия анимации Lucasfilm). Python предлагает много возможностей для тех, кто хочет подобрать мощный дополнительный язык программирования.

Язык Python был разработан в поздние 80-е и вышел в 1991 году; его автором является  Гвидо ван Россум (Guido van Rossum).

Python разрабатывался как преемник языка программирования ABC, его первая версия уже включала обработку исключений, функции и классы с наследованием. После создания в 1994 году форума конференции Usenet под названием comp.lang.python база пользователей Python значительно выросла, благодаря чему Python стал одним из самых популярных языков программирования для разработки программ с открытым исходным кодом.

Краткий обзор

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

Python 2

Вышедшая в 2000 году версия Python 2 сделала процесс разработки более прозрачным и всеобъемлющим по сравнению с предыдущими версиями Python с реализацией PEP.

Примечание: PEP (Python Enhancement Proposal) – техническая спецификация, которая предоставляет информацию членам сообщества Python или же описывает новую функцию языка.

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

Python 3

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

Основные изменения в Python 3.0: замена оператора print встроенной функцией, улучшение способа деления целых чисел и продвинутая поддержка Unicode.

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

Python 2.7

Версия Python 2.7 вышла 3 июля 2010 года и должна была стать последней версией Python 2.х.

Версия Python 2.7 была предназначена для пользователей Python 2.х, которым трудно перейти на новую версию, Python 3, и должна была обеспечить совместимость этих версий. Она предоставляла усовершенствованные модули для версии 2.7 (например unittest для поддержки автоматизации тестирования, argparse для разбора параметров командной строки, а также более удобные классы – коллекции).

Таким образом, версия Python 2.7 оказалась в уникальном положении: он стал связующим звеном между Python 2 и Python 3.0, благодаря своей совместимости со многими надежными библиотеками он получил популярность среди программистов. Как правило, сегодня при упоминании Python 2 имеется в виду именно версия Python 2.7.

Версия Python 2.7 по-прежнему остаётся в разработке, которая на данный момент почти полностью состоит из исправлений багов и будет полностью прекращена в 2020 году.

Ключевые различия

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

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

Print

В Python 2 print является оператором, а в Python 3 – встроенной функцией. К примеру, чтобы вывести в Python 2 предложение Sharks are my favorite sea creatures, вы можете использовать следующую команду:

print "Sharks are my favorite sea creatures"

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

print("Sharks are my favorite sea creatures")

Благодаря этому изменению синтаксис языка Python стал более последовательным. Теперь синтаксис функции print() совместим с Python 2.7.

Деление целых чисел

В Python 2 целым считалось любое число, введённое без десятичных знаков. На первый взгляд, это довольно простой способ обработки. Однако при попытке поделить одно целое число на другое бывает результат с плавающей точкой, например:

5 / 2 = 2.5

Но целые числа в Python 2 не могли изменить свой тип, а потому не могли использовать плавающую точку.

Когда два числа по обе стороны символа деления являются целыми числами, деление floor, то есть, для фактора х Python 2 возвращает наибольшее целое число меньше или равное х. К примеру, при делении 5 / 2 таким числом будет 2.

a = 5 / 2
print a
2

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

В Python 3 деление целых чисел становится понятнее.

a = 5 / 2
print(a)
2.5

Чтобы выполнить деление floor и получить только целую часть числа, нужно использовать следующий синтаксис Python 3:

b = 5 // 2
print(b)
2

Это изменение в Python 3 значительно улучшило деление целых чисел.

Поддержка Unicode

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

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

Более универсальный и надежный метод кодировки символов Unicode поддерживает более 128 000 символов. Чтобы использовать Unicode, в Python 2 нужно начинать строку с префикса u, например:

u"Hello, World!"

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

Если вы хотите сделать код Python 3 обратно совместимым с Python 2, вы можете по-прежнему использовать префикс u.

Постоянная поддержка

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

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

Остающаяся в разработке версия Python 3 предоставляет пользователям своевременное исправление багов и более производительные программы.

Заключение

Python – многофункциональный и хорошо задокументированный язык программирования.

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

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

Tags: , ,

3 комментария

Добавить комментарий