python什么版本好

补充一下,我现在大一,所以我想问的是就对于4年之后,那个版本会比较好,会成为比较主流的。

肯定是 3 啊,2 已经稳定(不更新)了。每当遇到这个问题好多人就会说“很多模块不支持3”,但是 3 已经发布 5 年多了,5 年过去还不支持新版本的模块,基本就是停止维护了。

楼上第一句话说语法修改不大,后面又说版本变化太大,自己不觉得矛盾么。
现在 3 已经不常遇到“重要而不支持”的第三方包问题了,除非你有很特别的需求。很多人不愿意用 3 我觉得就是懒,跟不愿意换掉 xp 似的,以前好多人说自己用 django ,django 不支持 3 所以不用 3,现在 django 也支持 3 了,他们又去找别的理由。
就算你真的遇到了一个重要且只支持 2 的包,那也不是问题,你可以 3.4 和 2.7 都装着,到时候用不同版本运行就行了。即使需要交叉使用的项目也不是问题,python 号称可以把不同语言粘在一起,没道理不能把自己的不同版本粘起来。重要的是避免自己再写只能在 2 上运行的代码
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-18
新手开始总纠结学 Python2 还是 Python3,这种纠结完全就是给自己徒增烦恼,因为它们是同一种语言,只有少部分地方语法不兼容,尽管目前大部分公司还在用Python2,但是Python3逐渐成为主流已是不争事实,毕竟后者性能方面更占有优势。
Python2与Python3到底有何区别呢?
1.性能
Py3.0运行 pystone
benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。
Py3.1性能比Py2.5慢15%,还有很大的提升空间。
2.编码
Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:
>>> 中国 = 'china'
>>>print(中国)
china
3. 语法
1)去除了<>,全部改用!=
2)去除``,全部改用repr()
3)关键词加入as 和with,还有True,False,None
4)整型除法返回浮点数,要得到整型结果,请使用//
5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数
4. 字符串和字节串
1)现在字符串只有str一种类型,但它跟2.x版本的unicode几乎一样。
2)关于字节串,请参阅“数据类型”的第2条目
5.数据类型
1)Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long
2)新增了bytes类型,对应于2.X版本的八位串,定义一个bytes字面量的方法如下:
>>> b = b'china'
>>> type(b)
str对象和bytes对象可以使用.encode() (str -> bytes) or .decode() (bytes ->
str)方法相互转化。
>>> s = b.decode()
>>> s
'china'
>>> b1 = s.encode()
>>> b1
b'china'
3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有
dict.has_key(),用 in替代它吧
6.面向对象
1)引入抽象基类(Abstraact Base Classes,ABCs)。
2)容器类和迭代器类被ABCs化,所以cellections模块里的类型比Py2.5多了很多。
3)迭代器的next()方法改名为__next__(),并增加内置函数next(),用以调用迭代器的__next__()方法
4)增加了@abstractmethod和 @abstractproperty两个 decorator,编写抽象方法(属性)更加方便。
7.异常
1)所以异常都从 BaseException继承,并删除了StardardError
2)去除了异常类的序列行为和.message属性
3)用 raise Exception(args)代替 raise Exception, args语法
4)捕获异常的语法改变,引入了as关键字来标识异常实例,在Py2.5中:
>>> try:
... raise NotImplementedError('Error')
... except NotImplementedError, error:
... print error.message
...
Error
在Py3.0中:
>>> try:
raise NotImplementedError('Error')
except NotImplementedError as error: #注意这个 as
print(str(error))
Error
5)异常链,因为__context__在3.0a1版本中没有实现
8.模块变动
1)移除了cPickle模块,可以使用pickle模块代替。最终我们将会有一个透明高效的模块。
2)移除了imageop模块
3)移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5,
MimeWriter, mimify, popen2,
rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模块
4)移除了bsddb模块(单独发布,可以从Python "bindings" for Oracle Berkeley DB获取)
5)移除了new模块
6)os.tmpnam()和os.tmpfile()函数被移动到tmpfile模块下
7)tokenize模块现在使用bytes工作。主要的入口点不再是generate_tokens,而是 tokenize.tokenize()
第2个回答  2014-04-06
就像windows一样,虽然以后win7和win8,会把xp取代,但是很多人还是热衷于xp的稳定性。
3开头的python,还不太稳定,建议2.6或者2.7,
我现在用的就是2.6.
第3个回答  2014-04-06
和版本关系不大的,新的版本基本就是修bug,语法的修改不大。目前2.7比较稳定,3开头的版本因为变化太大,模块很多不支持,所以还是2.7好点
相似回答