本文目录一览:
- 1、对于初学者应该选择python什么版本呢?
- 2、python版本有什么不同
- 3、为什么python有两个不同的版本,并且语法规
- 4、关于Python版本的问题?
- 5、anaconda与python什么关系
- 6、python里面不一样的版本有什么区别?
对于初学者应该选择python什么版本呢?
目前,根据数据显示,使用Python2.xd 开发者站63.7%,而使用Python3.x的用户站36.3%,由此可见使用使用Python2.x的用户还是占多数。2014年,Python的创始人宣布将Python2.7支持时间延长到2020年,那么初学者应该选择什么版本呢?目前建议初学者选择Python3.x版本
1、目前,使用Python3.x是大势所趋
2、Python3.x在Python2.x的基础上做了功能升级
3、Python3.x和Python2.x思想基本是共通的
当然选择Python3.x也会有缺点,那就是很多扩展库的发行总是滞后于Python的发行版本,甚至目前还有很多库不支持Python3.x。因此,在选择Python时候,一定要先考虑清楚自己的学习目的,例如,打算做哪方面的开发、需要用到哪些扩展库,以及扩展库支持的最高Python版本等。明确这些问题后再做出适合自己的选择。
python版本有什么不同
对比python2和python3,两者的差异如下:
1. Python3 对 Unicode 字符的原生支持。
Python2 中使用 ASCII 码作为默认编码方式导致 string 有两种类型 str 和 unicode,Python3 只
支持 unicode 的 string。Python2 和 Python3 字节和字符对应关系为:
2. Python3 采用的是绝对路径的方式进行 import
Python2 中相对路径的 import 会导致标准库导入变得困难(想象一下,同一目录下有 file.py,如
何同时导入这个文件和标准库 file)。Python3 中这一点将被修改,如果还需要导入同一目录的文件必
须使用绝对路径,否则只能使用相关导入的方式来进行导入。
推荐学习《python教程》
3. Python2 中存在老式类和新式类的区别,Python3 统一采用新式类。新式类声明要求继承 object,
必须用新式类应用多重继承。
4. Python3 使用更加严格的缩进。Python2 的缩进机制中,1 个 tab 和 8 个 space 是等价的,所
以在缩进中可以同时允许 tab 和 space 在代码中共存。这种等价机制会导致部分 IDE 使用存在问题。
Python3 中 1 个 tab 只能找另外一个 tab 替代,因此 tab 和 space 共存会导致报错:TabError:
inconsistent use of tabs and spaces in indentation.
废弃类差异
1. print 语句被 Python3 废弃,统一使用 print 函数
2. exec 语句被 python3 废弃,统一使用 exec 函数
3. execfile 语句被 Python3 废弃,推荐使用 exec(open("./filename").read())
4. 不相等操作符""被 Python3 废弃,统一使用"!="
5. long 整数类型被 Python3 废弃,统一使用 int
6. xrange 函数被 Python3 废弃,统一使用 range,Python3 中 range 的机制也进行修改并提高
了大数据集生成效率
7. Python3 中这些方法再不再返回 list 对象:dictionary 关联的 keys()、values()、items(),zip(),
map(),filter(),但是可以通过 list 强行转换:
1. mydict={"a":1,"b":2,"c":3}
2. mydict.keys() #built-in method keys of dict object at 0x000000000040B4C8
3. list(mydict.keys()) #['a', 'c', 'b']
8. 迭代器 iterator 的 next()函数被 Python3 废弃,统一使用 next(iterator)
9. raw_input 函数被 Python3 废弃,统一使用 input 函数
10. 字典变量的 has_key 函数被 Python 废弃,统一使用 in 关键词
11. file 函数被 Python3 废弃,统一使用 open 来处理文件,可以通过 io.IOBase 检查文件类型
12. apply 函数被 Python3 废弃
13. 异常 StandardError 被 Python3 废弃,统一使用 Exception
修改类差异
1. 浮点数除法操作符“/”和“//”的区别
“ / ”:
Python2:若为两个整形数进行运算,结果为整形,但若两个数中有一个为浮点数,则结果为
浮点数;
Python3:为真除法,运算结果不再根据参加运算的数的类型。
“//”:
Python2:返回小于除法运算结果的最大整数;从类型上讲,与"/"运算符返回类型逻辑一致。
Python3:和 Python2 运算结果一样。
2. 异常抛出和捕捉机制区别
Python2
1. raise IOError, "file error" #抛出异常
2. except NameError, err: #捕捉异常
Python3
1. raise IOError("file error") #抛出异常
2. except NameError as err: #捕捉异常
3. for 循环中变量值区别
Python2,for 循环会修改外部相同名称变量的值
1. i = 1
2. print ('comprehension: ', [i for i in range(5)])
3. print ('after: i =', i ) #i=4
Python3,for 循环不会修改外部相同名称变量的值
1. i = 1
2. print ('comprehension: ', [i for i in range(5)])
3. print ('after: i =', i ) #i=1
为什么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
2.5/2.6的居多。
很多插件和库都还停留在2.5/2.6阶段,如果你去玩3.0,会发现很多扩展都没有。可以说是如果你现在玩3.0“不实用”。
win上建议学2.6吧,linux上就玩2.5吧,py2.*和py3.*也并不是100%的不兼容,python3.0只不过是对python2.*进行了一次大清洗,源码上精炼了许多,语法上做了些修缮。会2.5/6的话,以后不会对3.0感冒的。
anaconda与python什么关系
安装包大小不同,作用不同,性质不同。
1、安装包大小不同,python自身缺少numpy、matplotlib、scipy、scikit-learn等一系列包,需要安装pip来导入这些包才能进行相应运算。Anaconda(开源的Python包管理器)是一个python发行版,包含了conda、Python等180多个科学包及其依赖项。包含了大量的包,使用anaconda无需再去额外安装所需包。
2、作用不同,Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言。anaconda可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。
3、性质不同,Anaconda是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
python里面不一样的版本有什么区别?
Python版本分为Python2和Python3,它们之间的区别还是挺大的。
Python2和Python3分别是Python的两个版本,Python3作为一个升级版,许多针对早期Python版本设计的程序都无法在Python3.0上正常执行。
1、Python2既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如print
‘hi’;Python3使用print必须要以小括号包含打印内容,比如print(‘hi’);
2、Python2 range(1,10)返回列表,Python3中返回迭代器,节约内存;
3、Python2中使用ascii编码,Python3中使用uft-8编码;
4、Python2中Unicode表示字符串序列,str表示字节序列;Python3中str表示字符串序列,byte表示字节序列;
5、Python2中正常显示中文,引入coding声明,Python3中是不需要的;
6、Python2中是raw_input()函数,Python3中是input()函数。