0

我错过了为什么 Python3 具有与 Python2 不兼容的命令的点。

例如命令

打印'你好'

确实在 Python2 中工作,而不是在 Python3 中。为什么?

我希望 Python3 与 Python2 兼容,就像 C#4 与 C#2 兼容一样。

4

3 回答 3

8

我错过了为什么 Python3 的命令与 Python2 不兼容的观点。

因为 Python 3 与 Python 2 不是同一种语言。

Python 版本通常大多向后兼容以前的版本;Python 2.7 在很大程度上向后兼容 Python 2.6。

然而,从一开始,Python 3(或 3000 作为它的设计项目最初的代号)就特别不同。引用其中一份设计文件

Python 3000 将对 Python 引入许多向后不兼容的更改,主要是为了简化语言并消除一些以前的设计错误。)

因此,Python 3 不能向后兼容以纠正语言中无法通过向后兼容的更改来纠正的特定错误。

使用写入语句stdout而不是函数是这些变化之一;print已被一个函数取代print()

不同的语言和软件项目对其版本号的含义使用不同的标准。Python坚持major-minor-micro方案;同一主要编号内的版本在很大程度上向后兼容,同一次要编号内的版本仅包含错误修复。请参阅Python 版本号常见问题解答

Python 版本编号A.B.CA.B. A是主要版本号——仅在语言发生真正重大变化时才会增加。B是次要版本号,为减少惊天动地的变化而增加。C是微观级别 - 每个错误修复版本都会增加。有关错误修复版本的更多信息,请参阅PEP 6 。

Python 也比 C# 早了很多。Python 开发始于 1989 年,2000 年发布了 2.0 版。另一方面,C# 自 2002 年以来才出现;也许再过十年左右,它也会出现向后不兼容的变化。

于 2013-09-23T06:52:01.510 回答
3

因为在 Python 2 中,print是一个语句。但是print()现在是 Python 3 中的一个函数。但是,print(...)在 Python 2 中仍然是有效的语法,您也可以在 Python 2from __future__ import print_function中获取 Python 3 的打印函数。

不要指望python 3和2兼容;还有很多其他的变化。例如,reduce()已删除,并且大多数内置函数现在返回曾经返回列表的生成器(例如map()zip()filter())。

于 2013-09-23T06:40:30.407 回答
0

python3 有一个名为“2to3”的工具。该工具将帮助您将 python2.x 源代码转换为 python3.x 源代码。阅读手册http://docs.python.org/2/library/2to3.html

于 2013-09-23T07:04:21.900 回答