中企动力 > 头条 > python2切换python3

网站性能检测评分

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

python2切换python3

Python2.x与Python3.x版本区别 推广视频课程

img

包绍辉

关注

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()函数。

Fedora需要几年时间才能从Python 2切换到Python 3 ? 行业视频课程

img

塞琳娜

关注

Fedora 发行版默认使用的 Python 语言版本从 Python 2 切换到 Python 3 还需要在发布多个版本之后才能完成。最新提议的日期是到 2020 年,也就是上游淘汰 Python 2 之时。

目前 Fedora 的大部分 Python 代码能兼容 Python 3,但 /usr/bin/python 仍然指向 Python 2,各种 python-* 包仍然意味着是在使用 Python 2。

开发者希望将 Python 2 切换到 Python 3 分成三个阶段来完成:

第一阶段:从 Python 2 包删除 python-prefix,并从 shebangs 中删除/ usr / bin / python

这一阶段预计在 2019 年上半年,发布 Fedora 30 时实现,这是 Fedora 清理 Python 包准备阶段,所有脚本应明确使用 /usr/bin/python2 或 /usr/bin/python3。 然后才能进入第二阶段

第二阶段:将默认的 Python 版本转换为 Python3

到 2020 年上半年发布 Fedora 32 时,默认的 Python 版本可以切换到 Python 3,这意味着安装 python-foo 软件包将是 Python 3 版本。在第一阶段之后,Fedora 中不再使用 /usr/bin/python ,因此将 symblink 重新引导回 python2 是安全的。

第三阶段:摆脱 Python 2

这一阶段从 Fedora 33 或更高版本开始不再支持 Python 2,也就是上游淘汰 Python 之时。但是,否要将其从 Fedora 中完全删除,目前 Fedora devel 也还在讨论。不过我们不难发现 Fedora 中的在许多方面仍然需要它。

这三个阶段能否顺利进行,取决于前一阶段是否顺利完成。有关这些计划的更多细节可通过这个 Fedora 维基页面进行了解,Fedora devel 也在讨论这件事。(详情:https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)

企业里Python2和3哪个用的多?为什么? 企业视频课程

img

colour

关注

python2和python3的差异

如果你是一个初学者,或许你曾经触摸过其他的编程言语,你可能不知道,在开端学习python的时分都会遇到一个比较让人很头疼的问题:版别问题!!是学习python2 仍是学习 python3 ?这是十分让人纠结的!

查找一下便会发现python3 和 python2 是不兼容的,并且差异比较大,究竟学习哪个版别呢?

所以先学 Python2 仍是 Python3 都不是问题,或许说都是问题。可是现在总算不必纠结这个问题了!哈哈,好开心

因为一个开发者已经发布了一个网站来倒计时Python 2.7的“退休”。

能够看出,Python 2.7有望在两年后退休。

开发商表明,因为官方的日期没有发布,估计Python 2.7会在2020年4月12日退休,这是时刻的时分,pycon将举办。

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

巨蟒3,现在你在舞台上。

Python 2.7是2 x系列的最终一个版别。它的继任者Python 3在2008年12月发布,但它与2。X系列不兼容。3的3的特征和语法被移植回2.6和2.7。2.7的支撑时刻至少为10年,并将在2020之前供给过错批改。

怎么转换为Python 3?

如果您的主代码仍然根据Python 2,这是完全能够了解的。最流行的包PyPI上现在能够运转在Python 2和Python 3,添加更多的日常。为了简化转换,官方搬迁指南供给了在Python 3中运转Python 2代码的主张。

所以我主张:

1. 如果是你在企业中,需求用到python而学习python的话,那就要看企业的使用python的版别进行学习;

2. 如果想要更多的老练解决方案,最少的bug,最安稳的使用那就用python2 ;

3. 如果你是在读大学的学生,那我主张你学习python3,比及结业的时分或许python已经成为了干流。

另外,选2仍是3一般都是编程小白才会考虑。考虑的起点是作为一个初学者,有时候在学习的过程中会出现一些问题或者会参考一些项目去学习,这个时候会想一下,2是干流或者是3。已然刚学何不找个干流的。其实不管是2仍是3,只需照这一个学,就可以了。中心的差异在学习的时候也能更好的去加深一些形象

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?

一个快速将python2代码批量转为python3代码的好方法 公司视频课程

img

Derrick

关注

由于python存在python2和python3两个主要的版本方向,经常会有将python2的代码转到python3的环境下运行的需求。尤其是跑一些神经网络的代码时有很多是在python2的环境下写的。在python3下运行会遇见很多不兼容,最常见的就是python3中print函数必须加()而python2中不是。一个一个修改这种错误又非常麻烦。

此时一种方式是再安装一个python2,比如下载anaconda对应的python2的版本,管理相关的库,运行的时候指定python2运行。不过如果是运行依赖比较多的代码可能需要在python2的环境安装许多包。

这里介绍一个python3自带的脚本2to3.py,可以将python2的程序自动转为python3的形式,节省了很多修改细节的时间。这个脚本在Python安装目录下Toolsscripts文件夹下,如果是利用anaconda3安装的python3,就在anaconda3/Tools/scripts中,如下图:

这个文件实际是可以复制到电脑任何位置使用的,当然也可以就在这个位置利用cmd使用,里面的代码也很简单,只有几行:

使用方法也很简单,如果我需要转换某个python文件,比如E盘根目录下的test.py,只需要在命令行里输入

python 2to3.py -w E:/test.py

如果需要转换某个文件夹下的所有文件,例如E盘test文件夹下的所有文件,只需要在命令行里输入

python 2to3.py -w E:/test/

就是这么简单就可以完成python2代码像python3代码的变换,当然目前对于一些比较复杂的依赖这种方法还不能完全转换,还需要根据运行错误调整,不过已经可以节省很多的时间啦。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP