为什么Python 3不向后兼容?[关闭]


72

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

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

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


5
当然,也不会影响他们,他们正在运行Python 2.下
Wooble

3
@Wooble遇到了这个讨论,因为我在Google上搜索“ python 3向后兼容吗?” 这是最高的结果。我意识到StackOverflow的口头禅是,问题应该是负责任的而不是主观的。因此,我想知道这个问题的标题是“ python 3向后兼容吗? ”还是“为什么Python 3.0不向后兼容? ”,您认为社区会考虑取消关闭它吗?
2015年

@blong:也许吧,但是您可能还必须重写这个问题。
Wooble 2015年

@Wooble我认为你是对的。最初,我打算完全改变主意(与您达成一致)。但是,在我再考虑了一下之后,我认为这可能对新来者有所帮助。您是否认为考虑进一步修改问题会对OP的问题造成太大影响?
2015年

不,不是这样。
neelmeg '16

Answers:


65

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更具可读性,一致性和显式性,

1
重要的是要弄清楚Python 3.x不是升级,也不是Python 2.x之后的版本,而是另一个分支。
juliomalegria 2012年

5
@ julio.alegria:您能详细说明一下吗?实际上,Python 3.x旨在代替Python 2.x,正如“ Python 2.7的新功能”中所述:“ Python 2.7被计划为2.x版本的最后一个版本,因此我们致力于使其成为一个不错的版本。为帮助移植到Python 3,Python 3.x系列中的几个新功能已包含在2.7中
塔德克2012年

1
@ julio.alegria:你可能是对的。您能否提供任何支持该消息的资源(“(这根本不意味着Python 3.x打算替代Python 2.x ”))?我的意思是:Python核心团队(也许是Guido Van Rossum?)对此有何评论?
塔德克2012年

1
我一定会寻找的,希望我能找到有趣的东西!:)
juliomalegria 2012年

1
@ julio.alegria:太好了:)如果您发现了什么,请分享。
塔德克2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.