中企动力 > 头条 > python3区别

网站性能检测评分

注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。

python3区别

Python 2将退出,Python3 现在到你登场了! 行业视频课程

img

诸香

关注

Python的创始人——Guido,荷兰人,从阿姆斯特丹大学获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。Guido希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。于是python就产生了。我最看重Python的效率高:Python 语言因为有了丰富强大的类库,所以,Python 的开发效率能够显著提高。实现相同的功能,Python 代码的文件往往只有 C、C++ 和 Java 代码的 1/5~1/3。这也是为什么各大互联网公司广泛使用 Python 语言的原因。

可以看到 Python 2.7 预计将于两年后退休。

该开发者表示,由于官方尚未放出准确的日期,所以预计 Python 2.7 于 2020 年 4 月 12 日退休,这是到时 PyCon 的举办时间。

Python 2,感谢您多年以来的忠诚服务。

Python 3,现在到你登场了。

Python 2.7 是 2.x 系列的最后一个版本,它的继承者 Python 3.0 在 2008 年 12 月发布,但不兼容 2.x 系列,3.0 的许多特性和语法向后移植到了 2.6 和 2.7。2.7 的支持时间将最少为 10 年,2020 年前会一直提供 bug 修正。

如何转换到 Python 3?

如果你主要的代码仍然基于 Python 2,这是完全可以理解的。PyPI 的大部分流行软件包现在都可以在 Python 2 和 Python 3 上运行,而且每天都会增加更多。为了简化转换, 官方移植指南提供了在 Python 3 中运行 Python 2 代码的建议。

Python 2.7

在 2008 年 Python 3.0 的发布之后,Python 2.7 于 2010 年 7 月 3 日发布,并计划作为 2.x 版本的最后一版。发布 Python 2.7 的目的在于,通过提供一些测量两者之间兼容性的措施,使 Python 2.x 的用户更容易将功能移植到 Python 3 上。这种兼容性支持包括了 2.7 版本的增强模块,如支持测试自动化的 unittest,用于解析命令行选项的 argparse,以及更方便的集合类。

Python 3

Python 3 被视为 Python 的未来,是目前正在开发中的语言版本。作为一项重大改革,Python 3 于 2008 年年末发布,以解决和修正以前语言版本的内在设计缺陷。Python 3 开发的重点是清理代码库并删除冗余,清晰地表明只能用一种方式来执行给定的任务。

Python 2.7 具有 Python 2 和 Python 3.0 之间的早期迭代版本的独特位置,它因为对许多具有鲁棒性的库具有兼容性,对于程序员而言一直是非常流行的选择。当我们今天讨论 Python 2 时,我们通常指的是 Python 2.7 版本,因为它是最常用的版本。然而,Python 2.7 被认为是一种遗留语言,且它的后续开发,包括现在最主要的 bug 修复,将在 2020 年完全停止。

对 Python 3.0 的主要修改包括将 print 语句更改为内置函数,改进整数分割的方式,并对 Unicode 提供更多的支持。起初,Python 3的采用很缓慢,因为该语言不能向后兼容 Python 2,这就需要人们决定该使用哪个版本的语言。此外,许多封装库库只适用于 Python 2,但是由于 Python 3 背后的开发团队重申了终止对 Python 2 的支持,促使更多的库被移植到 Python 3 上来。从对 Python 3 提供支持的 Python 包的数量可以看出,Python 3 已得到越来越多的采用,在撰写本文时,支持它的包就已包括了 339 个最受欢迎的 Python 包。

好了,今天的知识就分享到这里,如果在学习Python的路上遇到学习的问题,欢迎和小编交流学习,你有好的学习Python方法,欢迎在下面评论区留言,一起讨论。你现在用的Python2.7版本还是Python3x?

初学者可以直接学Python3吗? 公司视频课程

img

黎厉

关注

我是个喜欢尝鲜的人,所以机器上的JDK、GoLang都是最新的,反正PC也不是生产环境。最近重装机器,又正好看到Python 3.7的Alpha版本出来了,就下载了个最新的版本装上,结果悲剧了,pip安装TensorFlow死活不行。折腾小半天,还是乖乖地换回3.6.x,这是TensorFlow Python API所支持的最新版本。

Python 3.6.2

前些日子,跟两个兄弟聊天,突然奇想,打算做个MUD游戏来怀下旧。有个很不错的MUD的框架叫Evennia,是Python写的,而且是基于2.7的。我对机器的软件环境有一种近乎变态的要求,混乱的版本搞在一起当然不能接受,于是就用另一台笔记本安装了Python 2.7,用不同的电脑做不同的事。

大家都晓得,Python 2和3的差异很大,所以官方也还在同时维护2.7和3.x两套东西。这么多年过去了,Python社区做了很多2to3的兼容性工作,按理说不存在选择2还是3的问题了。但是有一些老顽固的人和老顽固的库还在坚守2.x,这就给初学者带来了困惑,到底该学哪一个。

对于初学者,我的建议当然是直接学Python 3,除非有明确的指征要求你必须用Python 2(比如我想做MUD的例子)。

Python 3和2在语法层面改进很大,所以源代码是不兼容的。Python 3是2008年发布的,至今10年了;Python 2的最后一个分支2.7是2010年中期发布的,此后就没有大的改动了。从性价比的角度,也应该选择学习Python 3,而不是花时间去鼓捣2.x。

从Python 3.3(2012年Release的)开始,所有对标准库的改进,都只在3.x版本中体现。这也表明了Python社区从2.x迁移到3.x的决心。Python官方网站上有一篇名叫《Should I use Python 2 or Python 3 in my development activity》的文章,有一句开宗明义的话:

Python 2.x is legacy, Python 3.x is the present and future of the language

作为初学者,是愿意跟一个前朝遗老玩呢,还是愿意跟进Python的现状及未来?

最让人担心的,其实是第三方库和框架,有的还在继续用Python 2.x。我翻了一下github上的一些项目,发现但凡还停留在2.x的,基本处于没人维护的状态。大多数广泛使用的库,都已经兼容Python 3了。Python官网上列出了一些,包括机器学习中最常用的数值计算库Numpy和SciPy,机器视觉常用的OpenCV 3, HTTP库Request,XML PARSER库lxml,WEB框架Django.....关于3和2的兼容性,pythonhosted上有篇文章《Six: Python 2 and 3 Compatibility Library》讲得非常详细,大家可以参考。

最新的Release::Python 3.6.4

可能也会有高手告诉新手,语法层面的差别不算事儿,Py2和Py3没有区别,编程思想数据结构算法才是核心吧啦吧啦,但是我觉得手锯和电锯还是有区别的。Python作为一门如日中天的动态语言,在不断进化,语法改进的背后,也就是“编程思想”的改进。PL作为一个艰深的计算机科学分支,语法演化的背后是有深刻的思想性的东西的,轻视语法及其语义是不对的。

我的一个朋友遵循最新的C# Spec写了一个软件,然后告诉我说:这代表了我2017年的编程水准(他从1988年开始编程)。我看了看,好多我没见过的东西。虽然前几年我也用C#写过一款赖以谋生的软件产品,但编程方式还比较古老一点,没有深入了解C#语言的最新发展,换言之,也没有了解C#的最新的编程思想。

新的一年里,如果想学一门新的手艺,就学Python 3吧。

Python2.x与Python3.x版本区别 互联网视频课程

img

Ning

关注

Python2.x与3.x版本区别 Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。 为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Py..

Python2.x与3.x版本区别

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_functionprint("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_literalsprint(repr("fish"))除法运算符"/"在Python 3.x内总是返回浮点数。而在Python 2.6内会判断被除数与除数是否是整数。如果是整数会返回整数值,相当于整除;浮点数则返回浮点数值。

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

from __future__ import pisionprint(3/2)捕获异常的语法由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},这个语法等价于result={}for k, v in d.items(): result[expr1]=expr2return result集合推导式(Set Comprehensions) {expr1 for x in stuff}。这个语法等价于:

result = set()for x in stuff: result.add(expr1)return result八进制数必须写成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对原始码进行更深入的分析。例如给参数增加类别讯息:def sendMail(from_: str, to: str, title: str, body: str) -> bool: pass合并int与long类型。多个模块被改名(根据PEP8):旧的名字新的名字_winregwinregConfigParserconfigparsercopy_regcopyregQueuequeueSocketServersocketserverreprreprlibStringIO模块现在被合并到新的io模组内。 new, md5, gopherlib等模块被删除。 Python 2.6已经支援新的io模组。httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。取消了exec语句,只剩下exec()函数。 Python 2.6已经支援exec()函数。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP