导航:首页 > 编程语言 > python为什么有两个版本

python为什么有两个版本

发布时间:2023-05-16 11:28:25

① 测试自动化常用的python语言,两个版本python2和python3有何区别

Python 3 代表 Python 语言进化的一个产物,为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。所以我们在使用python进行自动化学习的时候,最好要清楚python3.0相比2.0的变化。
Python 3.0的变化主要在以下几个方面:
变化1:print语句没有了,取而代之的是print()函数。
变化2:Python 3 使用了文本(text)和(二进制)数据的概念,而非 Unicode 字符串和 8 位字符
串。所有的文本都是 Unicode 编码的。 Python3.X 源码文件默认使用utf-8编码
变化3:Python 2.x中不等于有两种写法 != 和 >
Python 3.x中去掉了>, 只有!=一种写法,还好,我从来没有使用>的习惯
变化4:列表推导时,不再支持[n for n in a,b]语法,改为[n for n in (a,b)]或[n for n in [a,b]]
变化5:python2中,文件对象有一个xreadlines()方法,返回一个迭代器,一次读取文件的一行。这在for循环中尤其实用。python3中,xreadlines()方法
不再可用。
主要就是上面5个,如果想对python3的变化还想更多了解,可以搜下传智播客软件测试学科的视频了解下

② python2和python3的区别

简单的说,2是旧3是新,3是2的升级版,3完全高于2,2是时代的眼泪3是现在和未来,2逐渐被淘汰3用的人越来越多。

之前两个版本共存只是因为诸多package的更新换代并没有跟上,但是到了现在只要还有活人维护的package基本都兼容3了,然而新建的package却越来越多不兼容2。使用2的意义基本没有了,日常用3大不了留一个2备用就行。

③ python2和python有什么区别

很多初学者刚开始学python的时候,一定都遇到过这个问题,python的世界有2个版本,python2 和 python3 ,而且有些语法还不兼容.怎么办~~到底应该选择哪个版本来开发呢?好,今天我们就来聊聊这个话题.

1.Python2和Python3的历史背景
Python语言是在20世纪90年代诞生的,算算到现在已经是25岁的大叔级的语言了(跟它同一个时代的还有一个鼎鼎大名的java是在1995发行的, 红了几十年).
但是Python真正成名比java晚了很多年,其实也主要是应用领域的时代变迁.(猜测为啥,对了大数据的出现)

Python2是Python里面一个非常重要的版本,最早的版本是从2001的时候开始的,特别是从2006年开始py2.5的发布,python的功能逐渐强大起来,慢慢开始稳定下来,并且差不多1-2年左右递增一个版本,在08年左右开始慢慢的火起来了.

而Python3最早是从2008开始发布,但是py3.0的版本非常不稳定,所以社区更新的很快,差不多几个月就更新一次。所以一开始的时候并没有很多人用,只到2014春暖花开的时候python3.4 deliver了才开始慢慢稳定下来.

下面我们看一个数据,这是Python社区联和一些网站在2014做的一个调查,关于Python2/3,部分的结果如下:
1).97.51%用户还在写Python2的代码
2).60%的用户写Python3的代码
3).78.09%的用户更多地写Python2代码
4).77.09%的用户认可Python3

目前有一些Linux里的操作系统已经默认使用Python3:
1).Arch Linux (轻量级的Linux操作系统)
2).Ubuntu 16.04 (一个桌面应用为主的Linux操作系统)
3).Fedora(Redhat桌面版本的延续)

2.Python2和Python3的主要区别:
目前最新的数据是,Python有两个版本:一个是2.7.12版,一个是3.5.12版.

那么Python2运行的好好的,为啥突然要出个Python3呢,其实是为了解决Python2里面一些历史问题
第一个是字符串的问题:
Python 2 中文本和二进制数据是一个烂摊子,Python中的str 是代表二进制数据还是文本数据是有二义性,文字既能代表文本数据又能代表二进制数据这很麻烦,此类错误发生的时候,我们很难意识到。

第二个是对Unicode的支持
由于python是在1991年2月开源发布,这意味着它早于在1991年10月发布的第一版 Unicode 标准。在接下来几年中,晚于 Unicode 标准出现的语言都选择在支持 Unicode 编码的基础上实现自己的 str 类型,这让 Python 2 处于尴尬的境地。
目前是一个python2/3共存的时代,这两个版本是不兼容的。
python2现在只是做bug的修复,新硬件和操作系统兼容的相关维护工作。不会再有新的功能加入,python2只支持到2020年.
现在Python正在朝着3版本进化,在进化过程中,大量的针对2.x版本的代码要修改后才能运行,所以目前有许多第三方库还暂时无法在3.x上使用。

不过可以畅想一下,也许再过几年情况就会好很多,毕竟全世界有很多优秀的程序员正在把一些库从Py2往Py3上迁移.

3.选择还是要根据自己的需求
若是企业的开发,要满足工作的需求,尤其是依赖的软件只能运行在Python2下,首选Python2.比如你的开发需要依赖大量的第三方的库(因为学Python非常大的一个原因就是因为它有成千上万的第三方包),像大量的数据分析,科学计算,还是选Python2吧.

如果你是自己学习,研究的话,愿意拥抱变化,那么建议学Python3,因为它是未来的方向.

结论:
编程其实主要是对编程思想的理解和经验的积累,千万不要因为纠结学Py2还是Py3而浪费大量时间。

Py2和Py3里面的思想基本是相通的,招式是类似的.当你熟悉Python到一定的程序的时候,会Py2的人学Py3只需要很短的时间。

所以不要再纠结细枝末节的语法差异,而耽误了宝贵的学习时间。

好了Python2和Python3的恩怨情仇就讲到这里啦(它们还要相爱相杀一段时间),希望能给初学者一些启发,若有什么不懂的,也可以留言跟我探讨交流.

最后说一下,原创不易,希望大家能够给点支持,欢迎转发,留言,也是对我的一点鼓励和动力.

④ 为什么python有两个不同的版本,并且语法规

Python 2 和 Python 3,一直是一个话题。Brett Cannon 是 Python 的核心开发者,听听他关于 Python3 的看法。
本月我在 Puppy 上开展了一个问答活动(Puget Sound Python用户组),让我最终解释了为什么 Python 3 会出现以及整个的 string/bytes 处理机制。我因此受到赞扬这让我很惊讶,因为原本我天真的认为大家都清楚为什么 Python 3 会出现。回想起来我真是太傻,竟然认为大部分人(不管是刚接触 Python 或者已经有一段时间)应该要么已经被告知要么有好奇心驱使去搜寻获取一个解释。所以这篇博文打算简单的解释一下为什么 Python 3 会存在,特别是我们为什么选择打破整个向后兼容 unicode/str/bytes,因为这使得代码移植到 Python 3 非常棘手。
在 Python 2 中文本和二进制数据是一个烂摊子
快,下面的文字代表什么语义?

Python

1

'abcd'

如果你是 Python 3 的用户,你会说它是一个按照 “a”、”b”、”c”、”d”顺序包含四个字母的字符串。
如果你是 Python 2 的用户,你也会说同样的话。你同样也可能会说它是代表 97、98、99、100 的数组。事实上在 Python 2中对于 str 代表的含义有两种正确的回答,这改变了语言的初衷。所以在 Python 3 中答案是唯一的。
《Python之禅》里讲“应该有一个“应该有一个––最好只有一个显而易见的方式去实现”。文字既能代表文本数据又能代表二进制数据这很麻烦。一旦对象 脱离你的控制,你将无从知晓。比如,如果你从网络上读到一些东西,你得小心判别这个 str 是代表二进制数据还是文本数据。或者你的代码里有一个bug,它是用来将 str 变换成文本信息––或者完全别的东西––但你搞砸了,不小心跳过了这一步。由于 str 潜在的代表两种类型,此类错误发生的时候,我们很难意识到。
也许你会说这些问题在 Python 2 中完全可以解决,只要你用 Unicode 而不是 str 去代表文本。虽然说的很对,但现实中人们不会那样去做。人们要么很懒,试着去避免解码到 Unicode 带来的额外工作,要么对性能要求很高,不想因为解码带来额外的损失。无掘银谨论哪种情况,它都假设你代码足够好而避免了那些麻烦,但我们都清判基楚人不是完美的都会犯错。如果人们寄希望于在 Python 2 中写出没有 bug 的代码能够成真,我也不会总是听到几乎每个将他们的工程转向 Python 3 的人讲他们在代码中间文本和二进制数据编解码的潜在 bug。
避免 bug 是一件很重要的事情,但却经常被人遗忘。搏如简化语言以及移除 str 可能代表的模糊含义会减少代码的出错率。《Python 之禅》指出“显胜于隐”的一个原因是: 歧义和隐性知识使得代码不容易沟通,进而容易出错,导致 bug。通过迫使开发者明确地分离出他们的二进制数据和文本数据,会使代码减少某一类的 bug。
其他语言都已经完全支持 Unicode(出于好的初衷)
人们有时会忘记 Python 有多久的历史了:Guido 在1989年12月开始编写 Python,在1991年2月开源发布。这意味着它早于在1991年10月发布的第一版 Unicode 标准。在接下来几年中,晚于 Unicode 标准出现的语言都选择在支持 Unicode 编码的基础上实现自己的 str 类型。这让 Python 2 处于尴尬的境地。直到2004年开始引发关注(那时 Python 3 开始酝酿),但它争辩说对于Unicode文本的弱支持是基于unicode 完全可选 ,人们不会在所有的文本信息上使用它。
支持 Unicode 和来自任何语言的的文本是非常重要的。Python 是一门面向世界的语言,而不只是那些支持 ASCII 码覆盖的罗马数字的语言。这就是为什么 Python 3 在处理文本时选择“要么使用 Unicode,要么就干脆不支持”的原因。官方宣称所有的 Python 3 代码都将支持世界上的每一个人,无论写代码的开发者是否有着明确的意图。在 Python 2 中,按照能够正确支持 Unicode 类型文本信息将项目分为两类;在 Python 3 中则不存在此类问题,并且它支持所有语言。
我们设想 Python 将更越来越受欢迎
在2004年我们开始编写 PEP 3000 进而开始设计 Python 3 (注:PEP 最初编号为 3000,但我们把它重新编号为 3100,这样我们就可以借助 编号 3000 的 PEP 来开发 Python 3)。我们清楚 Python 的受欢迎程度在不断上升,我们也希望能够延续这种势头(谢天谢地,目前如此)。但这也同时意味着如果我们想及时修正所有的设计缺陷来保证它的受欢迎度,最好趁现在而不是以后。我们设想 Python 3 相较于 Python 2 会持续更长一段时间,而 Python 2.7 仅仅是用来维护以前遗留的项目,而不会用于新项目中,那用 Python 3 写出的代码一定会多于用 Python 2 的。所以我们决定来承受由 Python 2 向 3 转型之痛。并且在这种设想下开发了 Python 3。想要知道 Python 3 的代码量能否赶超 Python 2,很显然需要数十年时间。
我们再也不会做这种打破向后兼容性的事情
我们团队已经下定决心再也不会让诸如 unicode/str/bytes 这样重大的改变随意发生。当我们决心开始 Python 3 的时候,我们设想同时希望社区能够像 Python 做的那般并且发布支持 Python 2的最终版本,接着切换到 Python 3 的功能开发中,只对 Python 2 做bug修复版本。这显然没有发生,同时也给我们上了一课。加上我们也没有发现在语言的基础设计中间存在需要做出如此重大改变来满足需要的缺陷。也希望 Python 4 不要发生比从标准库中移除废弃模块更激烈的改变。
结论
这就是 Python 3 为什么是这个样子的原因。我们意识到很多 bug 都是由于在 Python 2 中对 str 类型超负荷的使用。所以我们在 Python 3 中通过将文本数据和二进制数据分离来修正它。它也促使所有的文本信息都支持 Unicode,从而使得工程更容易在多种语言下工作。我们做出了改变,因为我们明白这种改变越早越好。我们在转型期曾经认为社区最终会摒弃 Python 2 和我们一道,但结局并非如此,相反我们花费了更多时间并且用一个 Python 2/3 的兼容子集来实现这种过渡。

⑤ 为什么python有两个不同的版本,并且语法规范什么的都不相通呢

语言会升级,很正常,基本上所有计算机语言都有这个问题,只不过Python没有保持向下兼容有点另类。

⑥ 电脑里有两个Python





阅读全文

与python为什么有两个版本相关的资料

热点内容
安卓手机微信发不出视频怎么弄 浏览:229
压缩机专用工具 浏览:575
qtcreator可以编译cp吗 浏览:405
小项目是云服务器还是本地好 浏览:14
墨痕斋是什么游戏的服务器 浏览:942
word文件如何压缩大小 浏览:279
遵义联通服务器地址是什么 浏览:29
ansys约束命令流 浏览:814
解压软件电脑版如何下载 浏览:791
闪电匕首算法球 浏览:692
linuxredis停止命令 浏览:670
大麦账号怎么加密 浏览:113
穿越火线怎么找服务器 浏览:526
秘密加密社交软件app 浏览:256
c语言编译器怎么找文件 浏览:836
数学不好能编程吗 浏览:254
微云里的视频加密 浏览:41
3大加密货币交易平台 浏览:647
钣金激光切割机编程 浏览:496
vivo手机手电筒app在哪里 浏览:787