我是个喜欢尝鲜的人,所以机器上的JDK、GoLang都是最新的,反正PC也不是生产环境。最近重装机器,又正好看到Python3.7的Alpha版本出来了,就下载了个最新的版本装上,结果悲剧了,pip安装TensorFlow死活不行。折腾小半天,还是乖乖地换回3.6.x,这是TensorFlowPythonAPI所支持的最新版本。
Python3.6.2前些日子,跟两个兄弟聊天,突然奇想,打算做个MUD游戏来怀下旧。有个很不错的MUD的框架叫Evennia,是Python写的,而且是基于2.7的。我对机器的软件环境有一种近乎变态的要求,混乱的版本搞在一起当然不能接受,于是就用另一台笔记本安装了Python2.7,用不同的电脑做不同的事。
大家都晓得,Python2和3的差异很大,所以官方也还在同时维护2.7和3.x两套东西。这么多年过去了,Python社区做了很多2to3的兼容性工作,按理说不存在选择2还是3的问题了。但是有一些老顽固的人和老顽固的库还在坚守2.x,这就给初学者带来了困惑,到底该学哪一个。
对于初学者,我的建议当然是直接学Python3,除非有明确的指征要求你必须用Python2(比如我想做MUD的例子)。
Python3和2在语法层面改进很大,所以源代码是不兼容的。Python3是年发布的,至今10年了;Python2的最后一个分支2.7是年中期发布的,此后就没有大的改动了。从性价比的角度,也应该选择学习Python3,而不是花时间去鼓捣2.x。
从Python3.3(年Release的)开始,所有对标准库的改进,都只在3.x版本中体现。这也表明了Python社区从2.x迁移到3.x的决心。Python官方网站上有一篇名叫《ShouldIusePython2orPython3inmydevelopmentactivity》的文章,有一句开宗明义的话:
Python2.xislegacy,Python3.xisthepresentandfutureofthelanguage
作为初学者,是愿意跟一个前朝遗老玩呢,还是愿意跟进Python的现状及未来?
最让人担心的,其实是第三方库和框架,有的还在继续用Python2.x。我翻了一下github上的一些项目,发现但凡还停留在2.x的,基本处于没人维护的状态。大多数广泛使用的库,都已经兼容Python3了。Python