属性:py叁.x初叶比py二.x功能低,可是py三.x有高大的优化空间,效用正在追赶。

Python2和Python3的区别?

金沙注册送58 1

性能:Py三.0运转 pystone
benchmark的快慢比Py二.五慢三成。吉多以为Py三.0有强大的优化空间,在字符串和整型操作上可以拿走很好的优化功用。

编码:Py叁.X源码文件私下认可使用utf-八编码。

语法:

一)去除了<>,全体制革新用!=

2)去除“,全体制改进用repr()

3)关键词参与as 和with,还有True,False,None

四)整型除法重返浮点数,要赢得整型结果,请使用//

五)参预nonlocal语句。使用noclocal x能够直接指派外围(非全局)变量

陆)去除print语句,参与print()函数实现平等的职能。同样的还有
exec语句,已经济体改为exec()函数

7)改动了逐1操作符的一举一动,比如x

八)输入函数退换了,删除了raw_input,用input代替:

  2.X:guess = int(raw_input(‘Enter an integer : ‘)) #
读取键盘输入的情势

  3.X:guess = int(input(‘Enter an integer : ‘))

九)去除元组参数解包。不可能def(a, (b, c)):pass那样定义函数了

十)新式的8进制字变量,相应地修改了oct()函数。

1一)扩大了 二进制字面量和bin()函数

1二)扩张的可迭代解包。在Py三.X 里,a, b, *rest = seq和 *rest, a =
seq都以法定的,只供给两点:rest是list

目的和seq是可迭代的。

python二和python三的局地界别,x之间的区分。1叁)新的super(),能够不再给super()传参数,

14)新的metaclass语法:

    class Foo(*bases, **kwds):

      pass

一5)支持class decorator。用法与函数decorator同样。

字符串和字符串:

一)以后字符串唯有str一类别型,但它跟二.x版本的unicode差不多大同小异。

二)关于字节串,请参阅“数据类型”的第1条文。

数据类型:

一)Py3.X去除了long类型,今后唯有一种整型——int,但它的一坐一起如同2.X版本的long

2)新扩充了bytes类型,对应于2.X本子的7人串,定义三个bytes字面量的不二等秘书技如下:

  str对象和bytes对象足以使用.encode() (str -> bytes) or .decode()
(bytes -> str)方法相互转化。

三)dict的.keys()、.items
和.values()方法重回迭代器,而在此以前的iterkeys()等函数都被屏弃。同时去掉的还有
dict.has_key(),用 in取代他吧。

面向对象:

壹)引进抽象基类(Abstraact Base Classes,ABCs)。

二)容器类和迭代器类被ABCs化。

叁)迭代器的next()方法改名叫__next__(),并扩展内置函数next(),用以调用迭代器的__next__()方法

四)扩大了@abstractmethod和 @abstractproperty三个decorator,编写抽象方法(属性)特别便于。

异常:

一)所以那么些都从 BaseException承继,并删除了StardardError

贰)去除了特别类的类别行为和.message属性

3)用 raise Exception(args)代替 raise Exception, args语法

4)捕获卓殊的语法退换,引进了as关键字来标志格外实例

5)异常链,因为__context__在三.0a1版本中从未达成

模块变动:

一)移除了cPickle模块,能够行使pickle模块代替。最后大家将会有三个透明高效的模块。

2)移除了imageop模块

3)移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5,
MimeWriter, mimify, popen2, 

rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模块

四)移除了bsddb模块(单独发布,能够从)

5)移除了new模块

六)os.tmpnam()和os.tmpfile()函数被活动到tmpfile模块下

7)tokenize模块未来接纳bytes职业。首要的入口点不再是generate_tokens,而是
tokenize.tokenize()。

其他

一)xrange() 改名称叫range(),要想使用range()获得一个list,必须显式调用:

  >>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

二)bytes对象不可能hash,也不协理b.lower()、b.strip()和b.split()方法,但对于后两者能够利用 b.strip(b’ 
\n\t\r \f’)和b.split(b’ ‘)来达到平等目标

三)zip()、map()和filter()都回去迭代器。而apply()、
callable()、coerce()、 execfile()、reduce()和reload
()函数都被去除了以后得以动用hasattr()来替换 callable().
hasattr()的语法如:hasattr(string, ‘__name__’)

四)string.letters和连锁的.lowercase和.uppercase被去除,请改用string.ascii_letters

五)假如x <
y的无法比较,抛出TypeError卓殊。二.x版本是回去伪随机布尔值的

6)__getslice__壹种类成员被打消。a[i:j]传闻上下文转换为a.__getitem__(slice(I,
j))或 __setitem__和 __delitem__金沙注册送58,调用

七)file类被遗弃

世家在初学 Python 编制程序的时候往往都会有3个思疑,到底是选拔 Python 2恐怕选取 Python 叁 呢?好的,话不多说。接下来,就给大家示例解读一下
Python 二 和 Python 3 之间的基本点差异

转发自网络

编码:py三原码文件暗中认可utf-8编码,使得变量名更为宽泛。

金沙注册送58 2

1.性能
Py3.0运维pystone
benchmark的速度比Py2.五慢百分之三十。吉多认为Py3.0有庞大的优化空间,在字符串和整形操作上能够取得很好的优化结果。

语法:1,去除了 <>  ,改用了  != 

  • python 二 中 print
    是一个言辞,语句就代表能够直接跟要打字与印刷的事物,不论想出口什么,直接放到
    print 关键字背后就可以(注:在 Python 二 中想让 print
    也当函数使用,能够导入 future 模块 中的 print_function)

2.编码
Py三.0源码文件默许使用utf-八编码,那就使得以下代码是合法的:

   2,加入了as和with关键字,还有True,False,None

金沙注册送58 3Python
2

>>>中国 = 
>>> 

   叁,整型触发再次回到浮点数,整除使用了‘//’

  • python 三 里,print()
    是贰个函数,函数就象征要丰盛括号才具调用,像其余函数同样,print()
    供给您就要输出的东西作为参数字传送给它

3.语法
壹)去除了<>,全部制改进用!=
2)去除“,全体制改正用repr()
3)关键词参加as和with,还有True,False,None
四)整型除法重回浮点数,要博得整型结果,请使用//
五)参与nonlocal语句。使用noclocal x能够直接指派外围(非全局)变量
6)去除print语句,参预print()函数达成平等的成效。同样的还有exec语句,已经济体改为exec()

   4,去除了print语句,加入了print函数

金沙注册送58 4Python
3

4、函数

   5,去除了raw_input,加入了input()函数

  • python 二 有多少个全局函数,用在指令行请求用户输入。第3个叫
    input(),它等待用户输入多少个 python 表达式;第三个称呼
    raw_input(),重临的结果为用户输入的值value = raw_input (“input
    values”)
  • python 3 中使用 input()value = input (“input values”)

一)print语句被print()函数代替了,能够使用首要字参数来代替老的print特殊语法。举个例子:

   陆,新的super(),在延续父类的时候乐意不再给super()传参数

Old:  , 2*2(, 2*2 x, 
New: (x, end= ) 

New: () 
 >>sys.stderr, (, file= (x, y) 
New: ((x, y)) 

   7,改动了一一操作符的作为,比方x<y,当x和Y类型不相称时抛出TypeError,而不是回去bool值

  • python 2:必须出示的在参数中写上基类
  • python 三:能够毫无再给super()传参数,间接无参数调用就能够

2)更改了逐1操作符的行为,比如x<y,当x和y类型不匹配时抛出TypeError而不是回来随即的bool值

字符串和字节串:

金沙注册送58 5

3)输入函数改造了:

  py第22中学字符串是以八-bit 字符串存款和储蓄

  • python 二:暗许编码 ascii,unicode 类型表示字符串连串,str
    类型表示字节类别

  • python 三:暗许编码 utf-八,str 类型表示字符串连串,byte
    类型表示字节体系(注:因为源码文件暗中同意使用 utf-八编码,所以用汉语给变量命名是官方的,不过不推荐使用)

= int(raw_input()) 
= int(input())

  py3中字符串以1陆-bit Unicode字符串存款和储蓄,今后的字符串唯有str一种类型

金沙注册送58 6

四)去除元组参数解包。不能够def(a, (b, c)):pass这样定义函数

数据类型:

  • python 二:True 和 False 在 Python 2中是三个全局变量,可认为其赋值只怕实行别的操作,开端数值分别为 一 和
    0,能够对其进展修改
  • python 3:True 或 False 不可变

伍)新式的8进制字变量,相应地修改了oct()函数。二.x的主意如下

  py3中去除了long类型,未来唯有一中整型–
int,但它的行为就像是贰.x版本的long

>>> 0666
438
>>> oct(438

3>>> 0666<pyshell
>>>438
>>> oct(438

  新增添了bytes类型,对应于贰.x版本的5位串。str对象和bytes对象足以采用.encode ()(str ->bytes) or .decode()(bytes -> str)方法相互转化

  • python 2 中有 range: range([start,] stop[, step]),依据 start 与
    stop 钦命的界定以及 step 设定的大幅,再次回到值是二个列表;xrange 和
    range 的用法一模一样,可是回去的是2个生成器
  • python 3 中唯有 range,并且python 三 中的 range 等同于 python 2 中的
    xrange,重回1个生成器,想要使用 range() 获得1个 list,必须显式调用

    list)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

陆)增添了贰进制字面量和bin()函数

面向对象:引进了抽象基类

>>> bin(438
>>> _438 = 
>>>

极度:全部越发都从BaseException承袭,并剔除了StardardError

  • package 在 python 二 中必须有 init 方法
  • 在 python 三 中能够未有 init 方法

7)扩大的可迭代解包。在Py叁.0里,a, b, *rest = seq和 *rest, a =
seq都以官方的,只须求两点:rest是list对象和seq是可迭代的

  py2:

8)新的super(),能够不再给super()传参数

1 try:
2     ......
3 except Excetion, e:
4     ......
  • python 二:有很多回到列表的情势,如 range(),字典对象的
    dict.keys()、dict.values() 方法, map()、filter
    etc…并且迭代器必须兑现 next 方法
  • python 叁:将回来列表的秘技改为了重回迭代器对象,并且放置了
    next,所以不用专门去贯彻 next 方法
>>>  (>>>  (a) 
>>> D(88
<.D object at 0x00D7ED90>

  py3:

9)新的metaclass语法

try:
    .....
except Exception as  e:
    ......
  • 在 python 第22中学,除法的取值结果取整数(注:假若指望结果取小数,须要导入 future
    模块 中的 division)
 Foo(*bases, **

其他 :

金沙注册送58 7Python
2

10)援助class decorator。用法与函数decorator同样:

  range和xrange的区别:

  • 在 python 叁 中,除法 / 的结果包涵小数,使用 // 只取整数
>>> ( =>>>
>>> C(). decorator可以用来玩玩狸猫换太子的大把戏。更多请参阅PEP 3129

    py2中:

金沙注册送58 8Python
3

伍、字符串和字节串

      range 函数表明:range( [start,] stop
[,step]),依据start与stop钦赐的范围及step设定的肥瘦,生成一个行列。 
 xrange
函数表明:用法与range完全同样,所不相同的是生成的不是1个数组,而是叁个生成器

  • python 二 有 int 和 long 类型。且 int 类型最大值不可能高出sys.maxint。能够经过在数字的末梢附上1个L来定义长整型,显明,它比int类型表示的数字范围越来越大
  • python 3 唯有一种整数类型 int,大许多情景下,和python2中的长整型类似

    py3:

1)以往字符串唯有str一连串型,但它跟二.x本子的unicode大约同样。
二)关于字节串,请参阅“数据类型”的第叁条文

      已经将xrange函数删除,range函数同py第22中学的xrange函数用法同样

  • python 2 支持 <> 等同于 !=
  • python 3 只支持 !=,不再支持<>

六、数据类型

  file类被打消:

    张开文件平昔动用   open(path)

  • 在 python 二里,如若需求编写制定3个遍历元组的列表解析,无需在元组值周边加上括号

一)Py三.0去除了long类型,现在唯有1种整型——int,但它的行事就像是贰.x版本的long
二)新扩张了bytes类型,对应于二.x版本的7个人串,定义四个bytes字面量的措施如下:

python 2:[ i for i in 1, 10]

>>> b = b
>>><type >
  • 在 python 三 里,括号是不能缺少的

三)str对象和bytes对象足以使用.encode() (str -> bytes) or .decode()
(bytes -> str)方法相互转化

python 3:[i for i in ]

>>> s =>>>
>>> b1 =>>>

四)一.
dict的.keys()、.items和.values()方法重返迭代器,而在此之前的iterkeys()等函数都被扬弃。同时去掉的还有dict.has_key(),用in代替他吧

7、7、面向对象

1)1)引进抽象基类(Abstraact Base Classes,ABCs)。
二)容器类和迭代器类被ABCs化,所以cellections模块里的品种比Py二.五多了广大

>>> >>> (

别的,数值类型也被ABCs化。关于那两点,请参阅 PEP 311九和PEP 31四一。

三)迭代器的next()方法改名叫__next__(),并追加内置函数next(),用以调用迭代器的__next__()方法

四)扩展了@abstractmethod和
@abstractproperty多个decorator,编写抽象方法(属性)越发方便人民群众

8、异常

1) 所以十分都从BaseException承袭,并剔除了StardardError
贰) 去除了那么些类的连串行为和.message属性
3) 用raise Exception(args)代替 raise Exception, args语法
四) 捕获尤其的语法改造,引进了as关键字来标志非凡实例,在Py二.5中:

>>>  NotImplementedError(>>>  NotImplementedError( NotImplementedError as error: 

5) 异常链,因为__context__在三.0a一本子中还未曾落成,那上面就不说了

九、模块变动

•       
移除了cPickle模块,能够选择pickle模块取代。最后大家将会有二个透明高效的模块。
•        移除了imageop模块
•        移除了audiodev, Bastion, bsddb185, exceptions, linuxaudiodev,
md5, MimeWriter, mimify, popen2, rexec, sets, sha, stringold, strop,
sunaudiodev, timing和xmllib模块
•       
移除了bsddb模块(单独发布,能够从)
•        移除了new模块
•        os.tmpnam()和os.tmpfile()函数被挪动到tmpfile模块下
•       
tokenize模块今后使用bytes职业。首要的入口点不再是generate_tokens,而是tokenize.tokenize()

10、其他

一)xrange()改名字为range(),要想利用range()获得1个list,必须显式调用:

>>> list(range(101, 2, 3, 4, 5, 6, 7, 8, 9]

二)bytes对象无法hash,也不帮助b.lower()、b.strip()和b.split()方法,但对此后两者能够选拔b.strip(b’
\n\t\r\f’)和b.split(b’ ‘)来落成同样目的
三)zip()、map()和filter()都回去迭代器。而apply()、callable()、coerce()、execfile()、reduce()和reload()函数都被去除了
四)string.letters和相关的.lowercase和.uppercase被删除,请改用string.ascii_letters等
伍)如若x <
y的不能够比较,抛出TypeError万分。二.x版本是再次回到伪随机布尔值的
6)__getslice__铺天盖地成员被吐弃。a[i:j]依赖上下文转变为a.__getitem__(slice(I,
j))或__setitem__和__delitem__调用
柒)file类被抛弃,在Py二.5中:

>>><type >>>>, line 1,  <module>   defined

壹.品质 Py三.0运维pystone
benchmark的快慢比Py二.伍慢3/10。吉多感到Py三.0有小幅度的优化空间,在字符串和整形操作上能够获得很好的优化结…

相关文章

网站地图xml地图