Почему Python 3 Не обратно совместим? [закрытый]


Я узнал, что Python 3 Не обратно совместим.

не повлияет ли это на многие приложения, использующие более старые версии Python?

как разработчикам Python 3 Не думаю, что это было абсолютно необходимо, чтобы сделать его обратную совместимость?

1 54

1 ответ:

является ли Python 3.0 обратно совместимым и почему?

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

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

от "что нового в Python 3.0" (доступен здесь):

в Python 3.0, по сравнению с 2.6. Python 3.0, также известный как" Python 3000 "или" Py3K",это первый когда-либо намеренно обратно несовместимый релиз Python. Есть больше изменений, чем в типичном выпуске, и больше, что важно для всех пользователей Python. Тем не менее, после переваривания изменений вы обнаружите, что Python действительно не сильно изменился – по большому счету,мы в основном исправляем хорошо известные раздражения и бородавки, и удаляем много старых крафт.

Python имеет новые возможности в 3.0, нарушая обратную совместимость

некоторые из наиболее заметных особенностей, которые можно рассматривать как нарушение обратной совместимости, но улучшение языка в то же время, являются:

  • print теперь это функция, а не оператор, и использование его в качестве оператора приведет к ошибке,
  • различные функции и методы теперь возвращают итератор или представление вместо списка, что делает итерацию их результатов более эффективной для памяти (вам не нужно хранить весь список результатов в памяти),
  • cmp аргумент для сортировки функций, таких как sorted() и list.sort() больше не поддерживается и должен быть заменен на ,
  • int теперь то же самое, что и Python 2.х long, что делает обработку чисел менее сложной,
  • / оператор является оператором для истинного деления по умолчанию (вы все еще можете использовать // для разделения этаж),
  • текст в Python 3.x теперь Unicode по умолчанию,
  • True,False и None теперь зарезервированы слова (так что вы не в состоянии сделать True, False = False, True,
  • изменено использование метакласса,
  • исключения должны быть производное от BaseException, должен быть поднят и пойман иначе, чем в Python 2.x,
  • и еще много других изменений, что делает Python более читаемым, последовательным и явным,