Python 2 和 Python 3 之间的区别

 我来答
顺畅又热诚的小mmo
2017-10-10 · TA获得超过4635个赞
知道大有可为答主
回答量:5234
采纳率:84%
帮助的人:286万
展开全部
按照当前时间点(Python 2.7 和 Python3.6),从宏观上介绍下Python 3和Python 2的区别,并举一些对应常见的例子:
1. 统一了字符编码支持。我特意把它拿出来放在第一条...
2. 增加了新的语法。print/exec等成为了函数,格式化字符串变量,类型标注,添加了nonlocal、yield from、async/await、yield for关键词和__annotations__、__context__、__traceback__、__qualname__等dunder方法。
3. 修改了一些语法。metaclass,raise、map、filter以及dict的items/keys/values方法返回迭代对象而不是列表,描述符协议,保存类属性定义顺序,保存关键字参数顺序
4. 去掉了一些语法。cmp、<>(也就是!=)、xrange(其实就是range)、不再有经典类
5. 增加一些新的模块。concurrent.futures、venv、unittest.mock、asyncio、selectors、typing等
6. 修改了一些模块。主要是对模块添加函数/类/方法(如functools.lru_cache、threading.Barrier)或者参数。
7. 模块改名。把一些相关的模块放进同一个包里面(如httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib放进了http里面,urllib, urllib2, urlparse, robotparse放进了urllib里面),个例如SocketServer改成了socketserver,Queue改成queue等
8. 去掉了一些模块或者函数。gopherlib、md5、contextlib.nested、inspect.getmoduleinfo等。去掉的内容的原因主要是2点:1. 过时的技术产物,已经没什么人在用了;2. 出现了新的替代产物后者被证明存在意义不大。理论上对于开发者影响很小。
9. 优化。重新实现了dict可以减少20%-25%的内存使用;提升pickle序列化和反序列化的效率;collections.OrderedDict改用C实现;通过os.scandir对glob模块中的glob()及iglob()进行优化,使得它们现在大概快了3-6倍等.. 这些都是喜大普奔的好消息,同样开发者不需要感知,默默的就会让结果变得更好。
10. 其他。构建过程、C的API、安全性等方面的修改,通常对于开发者不需要关心。
最后,重提一下我经常说的那句话:
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式