Назовите ключевые отличия Python 3 от Python 2

Ответ

Python 3 был выпущен с нарушением обратной совместимости для устранения фундаментальных недостатков языка. Ключевые отличия:

  1. print — это функция, а не инструкция. В Python 3 для вывода данных необходимо использовать скобки.

    # Python 3
    print("Hello, World!")
    
    # Python 2
    # print "Hello, World!"
  2. Строки по умолчанию в Unicode. Тип str в Python 3 хранит строки Unicode (UTF-8), а для последовательностей байт используется отдельный тип bytes. Это решило множество проблем с кодировками.

    type('текст')      # <class 'str'> в Python 3
    type(b'текст')     # <class 'bytes'> в Python 3
  3. Целочисленное деление. Оператор / всегда выполняет вещественное (float) деление. Для целочисленного деления используется оператор //.

    # Python 3
    print(5 / 2)   # 2.5
    print(5 // 2)  # 2
    
    # В Python 2 `5 / 2` вернуло бы 2
  4. range() вместо xrange(). Функция range() в Python 3 работает как xrange() в Python 2: она возвращает итерируемый объект-генератор, а не создает полный список в памяти, что более эффективно.

  5. Синтаксис обработки исключений. Изменился синтаксис для захвата исключения в переменную.

    # Python 3
    try:
        # ...
    except ValueError as e:
        print(e)
    
    # Python 2
    # except ValueError, e:
  6. input() возвращает строку. Функция input() в Python 3 всегда возвращает строку. Поведение старой input() из Python 2 (которая пыталась выполнить введенный код) удалено. Для чтения строки в Python 2 использовалась raw_input().

Эти изменения сделали язык более последовательным и предсказуемым.