Баннер мобильный (3) Пройти тест

Версии Python: отличия Python 2 и 3 и что нового в Python 3.12–3.14

Версий много, а он один

Разбор

28 ноября 2025

Поделиться

Скопировано
Версии Python: отличия Python 2 и 3 и что нового в Python 3.12–3.14

Содержание

    В этой статье рассмотрим отличия версий Python 2 и Python 3. Узнаем, что нового появилось в последних версиях третьей ветки.

    Немного о языке Python

    Сейчас Python — один из самых популярных языков программирования. Его применяют в самых разных областях:

    • Backend. На Python пишут серверные части веб-приложений, используя такие фреймворки, как Django или Flask. Множество десктопных и мобильных приложений также появились на свет благодаря языку Python.
    • Наука. Python применяют в научных исследованиях, помогая ученым создавать модели и симуляции процессов в самых разных научных дисциплинах. 
    • Геймдев. Участвует Python и в разработке компьютерных игр, а также в создании компьютерной графики и анимации. 
    • Big Data и искусственный интеллект. Еще Python прекрасно умеет работать с большими базами данных. На нем можно создавать различные системы искусственного интеллекта, модели машинного обучения, нейросети и программное обеспечение для роботов. 
    Рейтинг TIOBE
    Python — неизменно в числе лидеров рейтинга TIOBE — отчета по самым востребованным языкам программирования. Источник

    История этого языка началась в 1991 году. Именно тогда появилась его первая версия с номером 0.9.0. Она была самой простой и включала в себя только основные возможности: работа со строками и списками, а также циклы и условные операторы. 

    В 2000 году увидела свет версия 2.0. Среди прочего в ней появились улучшенная поддержка Unicode и сборка мусора. Поддержка второй версии Python была завершена в 2020 году. Версия 3.0 вышла в 2008 году. Она несовместима с прошлыми версиями, но привносит много новых возможностей. Далее рассмотрим некоторые различия между версиями 2 и 3.

    Python 2 и Python 3: отличия версий 

    Рассмотрим некоторые различия в версиях Python 2 и 3 на примерах кода.

    print — теперь функция

    В версии 2 print был оператором, а в версии 3 стал функцией. Вот так использовать print можно было раньше:

    print "Ответ:", 2*3

    А теперь, если использовать третью версию Python, нужно делать так:

    print("Ответ:", 2*3)

    Функция raw_input заменена на input

    Функция raw_input использовалась в Python 2 для получения данных от пользователя. Вот так, например, можно было получить имя пользователя:

    name = raw_input("Ваше имя: ")
    print "Привет, " + name

    В третьей версии используется функция input:

    name = input("Ваше имя: ")
    print("Привет, " + name)

    К слову, функция input в Python 2 тоже была, но она там пыталась проанализировать введенные данные и запустить их как код на Python. В третьей версии input всегда возвращает строку. По сути, input в третьей версии — это то же самое, что и raw_input во второй.

    Поддержка Unicode

    В Python 2 строки по умолчанию хранятся в кодировке ASCII, а в Python 3 применяется Unicode. Если нужно сохранить строку в формате Unicode, то при использовании Python 2 нужно в начале строки добавить букву u:

    print u"Привет, Мир!"

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

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

    В версии 2 при делении целых чисел происходит округление результата до ближайшего меньшего целого числа:

    result = 5 / 2
    print result

    В консоли получим:

    2

    Если нужен точный результат, то нужно добавить нули после точки:

    result = 5.0 / 2.0
    print result

    Результат:

    2.5

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

    result = 5 / 2
    print(result)

    Результат:

    2.5

    Чтобы получить округленный ответ, надо использовать оператор //:

    result = 5 // 2
    print(result)

    Получим:

    2

    Функция range вместо xrange

    В Python 2, чтобы сгенерировать последовательность чисел от 0 до 5, можно использовать функцию xrange:

    for i in xrange(6):
        print i

    В Python 3 вместо xrange используется range:

    for i in range(6):
        print(i)

    И в том и в другом случае в консоли получим следующее:

    0
    1
    2
    3
    4
    5

    Изменения в логических операторах

    Операторы логических функций «и» и «или» в Python 3 заменили на and и or. Старые символы | и & теперь используются для побитовых операций. Вот так выглядит условный оператор if с функцией «или» в Python 2:

    if result == 1 | 2:
      print "False"

    А так — в Python 3:

    if result == 1 or 2:
      print "False"

    Обработка исключений

    В конструкции try — except теперь надо использовать ключевое слово as. Во второй версии это выглядело примерно так:

    try:
        result = 10 / 0
    except ZeroDivisionError, e:
        print e

    А в третьей версии выглядит таким образом:

    try:
        result = 10 / 0
    except ZeroDivisionError as e:
        print(e)

    Версии 3.12, 3.13, 3.14

    Далее приведем некоторые новшества, которые появились в последних версиях Python из третьей ветки.

    Python 3.12

    Эту версию Python выпустили в октябре 2023 года. В ней:

    • Улучшили f-строки (форматируемые литералы с префиксом f). Теперь в них можно использовать, к примеру, многострочные выражения, а также бэкслеши и наборы символов из эскейп-последовательностей Unicode.
    • Ввели новую систему мониторинга исполнения. Она позволяет различным инструментам разработки, таким как профилировщики и отладчики, отслеживать разные события интерпретатора. Теперь можно достаточно гибко настроить, например, отслеживание вызова какой-либо функции или обработку исключения.
    • Модуль distutils удалили из стандартной библиотеки. Этот модуль долгое время использовали для сборки пакетов.
    • В asyncio улучшили производительность. Например, теперь отправка данных через сокеты происходит без лишнего копирования.
    • Добавили возможность создания субинтерпретаторов. У каждого субинтерпретатора будет свой собственный GIL. Это улучшит параллелизм в Python.
    • В CPython теперь есть защита от переполнения стека.

    Python 3.13

    Эта версия Python увидела свет в октябре 2024 года. Новое в ней:

    • Интерактивный интерпретатор. Поддерживает многострочное редактирование, цветные трейсы и подсветку ошибок.
    • Экспериментальный JIT-компилятор. Пока отключен по умолчанию, но в будущих версиях этот компилятор поможет значительно ускорить выполнение кода.
    • Добавили пока что экспериментальную опцию сборки CPython без GIL.
    • Массово удалили устаревшие модули: cgi, telnetlib, imp, aifc, audioop и другие.
    • Продлили срок поддержки. Срок полной поддержки увеличили до двух лет, а обновления безопасности будут приходить в течение трех лет.
    • Поддержку macOS с версии 10.9 по версию 10.12 прекратили.

    Python 3.14

    Релиз произошел в октябре 2025 года. В этой версии:

    • Вычисление аннотаций теперь откладывается до тех пор, пока они не понадобятся. Это сделали для экономии памяти.
    • Добавили методы float.from_number() и complex.from_number() для конвертации чисел.
    • Удалили некоторые устаревшие методы в модулях ast, asyncio, itertools, pkgutil и других.
    • Оптимизировали некоторые модули и стандартные функции.
    • Улучшили механизм автоматического отслеживания процессов. Стало меньше тратиться ресурсов при профилировании.
    • Добавлена поддержка t-строк (литералы с префиксом t). Они используют синтаксис, похожий на синтаксис f-строк, но в отличие от них раздельно хранят статические строковые данные и подстановочные значения.

    Какую версию выбрать и как перейти с Python 2 на Python 3

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

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

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

    Разработчики языка позаботились об удобной миграции со второй версии на третью, выпустив инструмент под названием 2to3. Это официальный инструмент для конвертации кода. Также есть улучшенная его версия modernize. Использовать эти инструменты совсем не сложно. Предположим, что у нас есть некий исходник example.py, написанный на Python 2, и нам нужно его преобразовать в Python 3. С помощью 2to3 это делается так:

    2to3 -w example.py

    Устанавливать ничего не нужно. Обычно 2to3 устанавливается вместе с интерпретатором. 

    Чтобы использовать modernize, его сначала надо установить:

    pip install modernize

    Преобразование исходника делается так:

    python-modernize --write example.py

    И в том и в другом случае получаем готовый исходный код на Python 3. Также есть возможность использовать некоторый функционал из третьей версии Python во второй. Для этого существует модуль future. Мы уже говорили о разнице в целочисленном делении в версиях 2 и 3. Чтобы использовать целочисленное деление из третьей версии Python во второй, надо для начала прописать такой импорт:

    from __future__ import division

    И теперь можно смело производить деление:

    print 5 / 2

    В консоли получим ответ:

    2.5

    Без модуля future мы бы получили в ответе число 2. А чтобы использовать еще и функцию print из Python 3, надо сделать так:

    from __future__ import print_function, division
    
    print(5 / 2)

    По возможности лучше всего использовать самую новую версию Python. Вторая версия давно не поддерживается, а модуль future и подобные ему инструменты хоть и добавляют совместимости, но всех проблем решить не могут.

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии