Ответ
Python 3 был выпущен с нарушением обратной совместимости для устранения фундаментальных недостатков языка. Ключевые отличия:
-
print— это функция, а не инструкция. В Python 3 для вывода данных необходимо использовать скобки.# Python 3 print("Hello, World!") # Python 2 # print "Hello, World!" -
Строки по умолчанию в Unicode. Тип
strв Python 3 хранит строки Unicode (UTF-8), а для последовательностей байт используется отдельный типbytes. Это решило множество проблем с кодировками.type('текст') # <class 'str'> в Python 3 type(b'текст') # <class 'bytes'> в Python 3 -
Целочисленное деление. Оператор
/всегда выполняет вещественное (float) деление. Для целочисленного деления используется оператор//.# Python 3 print(5 / 2) # 2.5 print(5 // 2) # 2 # В Python 2 `5 / 2` вернуло бы 2 -
range()вместоxrange(). Функцияrange()в Python 3 работает какxrange()в Python 2: она возвращает итерируемый объект-генератор, а не создает полный список в памяти, что более эффективно. -
Синтаксис обработки исключений. Изменился синтаксис для захвата исключения в переменную.
# Python 3 try: # ... except ValueError as e: print(e) # Python 2 # except ValueError, e: -
input()возвращает строку. Функцияinput()в Python 3 всегда возвращает строку. Поведение старойinput()из Python 2 (которая пыталась выполнить введенный код) удалено. Для чтения строки в Python 2 использоваласьraw_input().
Эти изменения сделали язык более последовательным и предсказуемым.