python3和python2兼容性选择

时间:2013-09-23 06:39:35

标签: python python-2.7 python-3.x

我错过了Python3具有与Python2不兼容的命令的原因。

例如命令

  

打印'你好'

在Python2中工作,而不在Python3中工作。为什么呢?

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

3 个答案:

答案 0 :(得分:8)

  

我不知道为什么Python3的命令与Python2不兼容。

因为Python 3与Python 2的语言不同。

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

然而,从一开始,Python 3(或其最初代号为3000的设计项目)特别是不同。引自one of the design documents

  

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

因此,Python 3不能向后兼容以纠正语言中的特定错误,这些错误可以通过向后兼容的更改进行 纠正。

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

不同的语言和软件项目对其版本号的含义使用不同的标准。 Python坚持主要 - 次要 - 微观计划;同一主要编号内的版本在很大程度上是向后兼容的,同一次要编号内的版本仅包含错误修复。请参阅Python version number FAQ

  

Python版本编号为A.B.CA.BA是主要版本号 - 它仅在语言的真正重大变化时递增。 B是次要版本号,为减少破坏性的更改而增加。 C是微观级别 - 每个错误修复版本都会增加。有关错误修正版本的更多信息,请参阅PEP 6

Python也比C#老了很多。 Python开发始于1989年,版本2.0于2000年问世。另一方面,C#自2002年以来一直存在;或许在未来十年左右,它也会看到一种向后不相容的变化。

答案 1 :(得分:3)

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

不要指望python 3与2兼容; there are many other changes。例如,reduce()已被删除,大多数内置函数现在返回一次返回列表的生成器(例如map()zip()filter())。

答案 2 :(得分:0)

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