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