我错过了Python3具有与Python2不兼容的命令的原因。
例如命令
打印'你好'
在Python2中工作,而不在Python3中工作。为什么呢?
我希望Python3与Python2兼容,就像C#4与C#2兼容一样。
答案 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.C
或A.B
。A
是主要版本号 - 它仅在语言的真正重大变化时递增。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