问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python2.x 与 3​​.x 版本区别在哪里?

发布网友 发布时间:2022-05-10 21:16

我来回答

2个回答

懂视网 时间:2022-05-11 01:38

Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。

为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。

许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。

为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。

新的Python程式建议使用Python 3.0版本的语法。

除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。

大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。

主要变化

Python 3.0的变化主要在以下几个方面:

print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python 2.6与Python 2.7里面,以下三种形式是等价的:

print "fish"

print ("fish") #注意print后面有个空格

print("fish") #print()不能带有任何其它参数

然而,Python 2.6实际已经支持新的print()语法:

from __future__ import print_function

print("fish", "panda", sep=', ')

新的str类别表示一个Unicode字串,相当于Python 2.x版本的unicode类别。而位元组序列则用类似b"abc"的语法表示,用bytes类表示,相当于Python 2.x的str类别。

现在两种类别不能再隐式地自动转换,因此在Python 3.x里面"fish"+b"panda"是错误。正确的写法是"fish"+b"panda".decode("utf-8")。 Python 2.6可以自动地将位元组序列识别为Unicode字串,方法是:

from __future__ import unicode_literals

print(repr("fish"))

除法运算符"/"在Python 3.x内总是返回浮点数。而在Python 2.6内会判断被除数与除数是否是整数。如果是整数会返回整数值,相当于整除;浮点数则返回浮点数值。

为了让Python 2.6统一返回浮点数值,可以:

from __future__ import division

print(3/2)

result={}

for k, v in d.items():

result[expr1]=expr2

return result

集合推导式(Set Comprehensions) {expr1 for x in stuff}。这个语法等价于:

result = set()

for x in stuff:

result.add(expr1)

return result

def sendMail(from_: str, to: str, title: str, body: str) -> bool:

pass

旧的名字

新的名字

_winreg winreg

ConfigParser configparser

copy_reg copyreg

Queue queue

SocketServer socketserver

repr reprlib

八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。新增了一个bin()函数用于将一个整数转换成二进制字串。 Python 2.6已经支援这两种语法。

dict.keys(), dict.values(), dict.items(), map(), filter(), range(), zip()不再返回列表,而是迭代器。

如 果两个物件之间没有定义明确的有意义的顺序。使用<, >, <=, >=比较它们会投掷异常。比如1 < ""在Python 2.6里面会返回True,而在Python 3.0里面会投掷异常。现在cmp(), instance.__cmp__()函数已经被删除。

可以注释函数的参数与返回值。此特性可方便IDE对原始码进行更深入的分析。例如给参数增加类别讯息:

捕获异常的语法由except exc, var改为except exc as var。使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支援这两种语法。

集合(set) 的新写法:{1,2,3,4}。注意{}仍然表示空的字典(dict) 。

字典推导式(Dictionary comprehensions) {expr1: expr2 for k, v in d},这个语法等价于

合并int与long类型。

多个模块被改名(根据PEP8):

StringIO模块现在被合并到新的io模组内。 new, md5, gopherlib等模块被删除。 Python 2.6已经支援新的io模组。

httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。

取消了exec语句,只剩下exec()函数。 Python 2.6已经支援exec()函数。

热心网友 时间:2022-05-10 22:46

现在大多数人用的是python3.x
2的话已经有很多功能不支持了
我也是道听途说,不过能用装3就装3把
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
宝宝被蜱虫叮咬后怎么办? 宝宝被蜱虫咬后该怎么办? 宝宝被蜱虫咬了,要怎么办啊? 宝宝被蜱虫咬了该怎么办? 携程旅行飞机票怎么退 携程旅行退机票手续费介绍 苹果七用ios10.0.01为什么打字 翻照片都炒鸡卡?刚刚买了几天 而且是1... 苹果7怎么老是感觉一顿一顿的 有没有人把苹果手机系统换成ios10之后,老死 QQ会员怎样成为VIP2 怎样自制香辣牛肉酱 手工牛肉辣椒酱的做法有哪些 番茄红萝卜土豆排骨汤孕妇可以喝吗 蕃茄排骨汤孕妇可以吃吗 孕妇可以吃排骨番茄汤吗 古龙峡漂流猛龙漂跟飞龙漂有什么区别 海蓝之谜万能油白天可以用吗 阿芙橙花舒缓精华油需要避光使用么 白天可以用么 为什么白天和晚上不能使用同一套护肤品 精华为什么不可以在白天用? 女孩子月经量少是不是宫寒 月经量少是宫寒引起吗?怎么调理呢? 月经量少颜色发黑有血块,是不是宫寒呢 月经量少颜色还很深是怎么回事啊,是宫寒吗 月经量少,小腹和四肢凉是宫寒吗 月经来了量特别少是宫寒吗该怎么办 北京少儿足球培训哪家好 北京在足球俱乐部给孩子进行足球培训的价格是多少啊?乐动体育少儿足球训练营的费用如何? 北京最好的少儿足球学校是哪里? 北京跃虎足球俱乐部有限公司怎么样? 辣椒酱自己做怎么好吃 浴盐里的二氧化硅可以用什么代替? 浴盐是否可以代替沐浴露? 去澡堂是搓澡的抹还是自己抹? 要另算钱吗? 求强烈推荐最靠谱的安卓模拟器,有能够实现在PC端玩安卓的大型网络手游的安卓模拟器吗? 用360wifi加了密手机用万能钥匙能打开吗 我是红米4x手机!下载了WiFi有360WiFi和腾讯WiFi, 360wifi-640f7f如何修改密码 手机连上360wifi怎样稳定 为什么我手机未联网,360WiFi显示一人在线无人蹭网 360wifi云u盘里面的文件可以加密吗 市长是指十二生肖哪个 市长代表什么生肖 狮子和羊都坐牢了,那谁是动物城的市长 电脑跑分42555算正常吗 HCG值42555是怀孕多久,孕酮19.6 42555+8255 56987+42555=? 求三国群英传SG7.exe无毒文件 火影忍者 背景音乐 我想删除一个文件可是删除不了怎么办