当前位置: 首页 > 面试题库 >

为什么Python 3不向后兼容?

傅博瀚
2023-03-14
问题内容

我了解到Python 3不向后兼容。

使用旧版本的Python会不会影响很多应用程序?

Python 3的开发人员怎么不认为使其向后兼容绝对必要?


问题答案:

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,
  • TrueFalseNone现在保留字(所以你不能做True, False = False, True
  • 元类用法的更改,
  • 必须从中派生异常,并且必须以BaseException与Python 2.x不同的方式引发和捕获异常,
  • 以及其他许多更改,使Python更具可读性,一致性和显式性,


 类似资料:
  • 我将我的最低API版本设置为8,但当我使用API 14中添加的函数时,android SDK无法警告我。为什么呢?

  • 问题内容: 我正在尝试编写一个将通用列表转换为特定类型列表的函数。在下面找到代码 但是显示编译错误- 无法对类型参数T执行instanceof检查。请改用其擦除对象>,因为在运行时将删除更多的通用类型信息。 任何澄清或方法来获得预期的结果? 提前致谢。:) 问题答案: 您无法以这种方式这样做。幸运的是,您已经有一个参数,所以可以 如果属于类或子类,则将返回true 。 正如@ILMTitan指出的

  • ngrok承诺有关其接口的兼容性和稳定性,以便您可以自信地构建集成顶部,知道在升级到较新版本时期望的更改。 兼容性承诺 Point Release (2.0.0 -> 2.0.1) - ngrok承诺在点发布之间没有突破性的变化 Minor Version Change (2.0 -> 2.1) - ngrok可能会进行小的更改,打破兼容性的次要版本更改。 ngrok承诺,任何破坏性更改将由一个版

  • 这是我的代码: 爪哇说: File.java:[92,141]不兼容的类型:java.lang.对象不能转换为捕获#1?扩展java.lang.对象 列141是中的。 为什么这个不会编译?

  • 我正在我的项目中尝试Java8,我被困在与我的构建过程相关的错误中。 我正在使用ANT脚本,在某个时刻,我正在使用一些javascript(嵌入到ANT中)来执行一些特定于构建的操作。导致错误的脚本部分如下所示: 该项目使用Java 7或Java 6构建得很好,但在使用Java 8时,它会给我带来一些错误。这些错误与JS引擎的升级有关。 特别是我得到了以下例外: javax。剧本ScriptExc

  • 确保您可以轻松顺利地升级您的应用程序,这对我们是很重要的。这就是为什么我们只在主 要版本里程碑才会打破兼容性。你可能熟悉 语义版本控制 ,这 就是我们在所有的 CakePHP 项目中使用的通用准则。总之,语义版本控制意味着只有主要版 本(比如2.0,3.0,4.0)可以打破向后兼容性。次要版本(比如2.1,3.1,3.2)可能会引入新 的功能,但不能破坏兼容性。错误修复版本(比如2.1.2,3.0