Почему Python 3 не поддерживает обратную совместимость? - программирование
Подтвердить что ты не робот

Почему Python 3 не поддерживает обратную совместимость?

Я узнал, что Python 3 не поддерживает обратную совместимость.

Не повлияет ли это на множество приложений с использованием более старых версий Python?

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

4b9b3361

Ответ 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() больше не поддерживается и должен быть заменен аргументом key,
  • int теперь совпадает с Python 2.x long, что делает обработку номера менее сложной, Оператор
  • / теперь является оператором для истинного деления по умолчанию (вы можете использовать // для разделения полов),
  • текст в Python 3.x теперь Unicode по умолчанию,
  • True, False и None теперь зарезервированы слова (так что вы не можете сделать True, False = False, True,
  • изменилось использование метакласса,
  • исключения должны быть получены из BaseException, должны быть подняты и пойманы иначе, чем в Python 2.x,
  • и многое другое, что делает Python более читабельным, последовательным и явным,