为什么Python 3不兼容?
我已经了解到,Python 3不是向后兼容的。
它会不会影响很多使用旧版本Python的应用程序?
Python 3的开发人员如何不认为将其向后兼容是绝对必要的?
Python 3.0向后兼容,为什么?
Python 3.0实现了很多非常有用的function,并且打破了向后兼容性。 它是有目的的,所以即使Python 2.x代码在Python 3.x下可能无法正常工作,仍然可以实现强大的function。
所以, Python 3.0基本上不是故意向后兼容的 。 多亏了这一点,你可以从一个全新的function中受益。 它甚至被称为“ Python 3000 ”或“ Python 3K ”。
从“ Python 3.0中的新function ”(可在此获得 ):
Python 3.0相比,2.6。 Python 3.0也被称为“Python 3000”或“Py3K”, 是有史以来第一个故意向后兼容的Python版本 。 比典型的版本有更多的变化,对于所有Python用户来说更重要。 然而,在消化这些变化之后,你会发现Python并没有发生太大的变化,总的来说, 我们主要是修复着名的烦恼和瑕疵,并去掉了很多旧的东西 。
Python在3.0中具有新特性,打破了向后兼容性
一些可以被认为是突破后向兼容性,但同时改进语言的最显着特征是:
-
print
现在是一个函数,而不是一个声明,并使用它作为语句将导致错误, - 各种函数和方法现在返回一个迭代器或视图而不是列表,这使得遍历其结果的内存更加高效(不需要将所有结果列表存储在内存中),
- sorting函数sort
sorted()
和list.sort()
cmp
参数不再支持,应该用key
参数replace, -
int
现在与Python 2.x一样long
,这使得数字处理更加简单, -
/
运营商现在是一个默认的真正划分运营商(你仍然可以使用/
地板划分), - Python 3.x中的文本现在是默认的Unicode,
-
True
,False
和None
现在是保留字(所以你不能做到True, False = False, True
, - 改变了元类的用法,
- 必须从
BaseException
派生BaseException
,必须以与Python 2.x不同的方式引发和捕获exception, - 还有其他更多的变化,使Python更具可读性,一致性和明确性,