得知互动

标题: python 2和python 3有什么区别? [打印本页]

作者: swmozowtfl    时间: 2015-7-28 11:33
标题: python 2和python 3有什么区别?
到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!; f/ ~  v  ]5 A3 {; I
搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别。
( r2 \5 _! i; N" L  V- d1.性能
4 @8 W& h, u) J, Z" {7 Jpy3.0运行 pystone benchmark的速度比py2.5慢30%。guido认为py3.0有极大的优化空间,在字符串和整形操作上可
2 f" E3 b. Q. h& `2 C以取得很好的优化结果。
4 @% ]5 T2 I/ ]' v3 m( F& J! ypy3.1性能比py2.5慢15%,还有很大的提升空间。
$ l: [# L+ H6 e& k) K* w; f7 R$ t2.编码
) S. v  P, _6 P: Gpy3.x源码文件默认使用utf-8编码,这就使得以下代码是合法的:
6 e/ ]3 ~. z' f( X6 z. u/ ^5 Z>>> 中国 = 'china'
& h2 y7 F4 p1 Y( Z/ z  z4 ^- o6 C>>>print(中国)
1 j# A2 L5 L$ V' kchina0 S9 f2 R& S) J: N; @1 N) u
3. 语法
* S$ r% f- m5 `1 i1)去除了<>,全部改用!=9 }( K) v; |- }$ u" q" D) j
2)去除``,全部改用repr()
& N. ?) l0 Y) _+ `+ Y0 q7 ^3)关键词加入as 和with,还有true,false,none
. P( ~! z4 e  K: p4)整型除法返回浮点数,要得到整型结果,请使用//3 }9 w7 X# ~, v/ I! R  Z
5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
. [, h: f7 B% `: A, s1 ?6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数+ F( x2 f. i9 v, M6 B3 V" t+ I- P
例如:
( ~' U/ g9 Y3 M) S2.x: print the answer is, 2*2# x$ i) Z  ^9 H7 l5 i* U' v3 H
3.x: print(the answer is, 2*2)
3 ^# ?3 M- w/ W2.x: print x, # 使用逗号结尾禁止换行
& P! Z- v2 H  t4 Q/ h3.x: print(x, end= ) # 使用空格代替换行
7 y! R1 N" v9 `0 }2.x: print # 输出新行- T; Y) ~5 [3 h5 Z% H0 v
3.x: print() # 输出新行
$ z- A" b3 _8 t9 _3 b; y2.x: print >>sys.stderr, fatal error% {+ p  L/ s8 N
3.x: print(fatal error, file=sys.stderr)) w7 G- e- G; u
2.x: print (x, y) # 输出repr((x, y))
! z( _8 D6 L/ s# T: T3.x: print((x, y)) # 不同于print(x, y)!: S$ x2 P1 C# P) m. ^5 y0 Q- o
7)改变了顺序操作符的行为,例如x
) z% }" b- o. K. k6 f8)输入函数改变了,删除了raw_input,用input代替:
  r7 ?7 l/ Q( y5 d$ y2 K2.x:guess = int(raw_input('enter an integer : ')) # 读取键盘输入的方法
/ @! H- u/ r& Z, O8 K) B3.x:guess = int(input('enter an integer : '))* `; C- m5 }  D( T1 H* B
9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了7 N9 |8 ~8 Z( z1 L  Y1 X
10)新式的8进制字变量,相应地修改了oct()函数。0 N4 i1 N' i" W( }& a  e0 }
2.x的方式如下:$ `$ ]* I+ L4 z* k! s
>>> 0666
, M% n; u- E: r5 ]$ b9 J6 @4381 i( a1 A5 }) l: w3 Q6 L. ]7 S
>>> oct(438)
( C( V- e! K, T'0666'" K4 R9 a9 s+ a1 q/ t  `$ R3 m4 m
3.x这样:
9 h. o: `0 o6 O$ ]! B# D>>> 06660 m  k; ]9 }! \9 s
syntaxerror: invalid token (
! l' w6 A: C' z>>> 0o666
. q# x% S) r- j5 N8 t: A2 s9 [9 K438  }0 a! n$ u$ W! m( p4 d$ X
>>> oct(438)" {' _1 a* `; ]2 E3 @; h
'0o666'
1 [" z3 L. i4 G. P) z% O6 F11)增加了 2进制字面量和bin()函数
2 ?; F0 Q  H# l9 P, v0 r>>> bin(438)
) j+ }: p7 g; ?4 H'0b110110110'8 v4 j3 [  t! N& s+ v  n# e3 u
>>> _438 = '0b110110110'
& k1 ]8 x. d/ k$ K, ^# b& w- N>>> _438
6 G& \/ G6 c* c$ W( j'0b110110110'$ Y* E5 r% i0 Q) V5 K) B6 F7 i
12)扩展的可迭代解包。在py3.x 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list& U4 C+ a% v" w+ j0 T- J' B) C. }" d
对象和seq是可迭代的。! i8 Q0 G3 X( u7 M  q1 Z! i
13)新的super(),可以不再给super()传参数,1 S" K! Y: A. q
>>> class c(object):. [6 i, T: x1 S, I8 S' T! e: O, n0 ~
def __init__(self, a):
) F5 e( [" u, T, @) gprint('c', a)
0 F2 j7 V/ R+ H8 B& \>>> class d(c):7 }2 w* I/ C7 i" Z/ I4 T
def __init(self, a):+ s% f- ]! t! g" l
super().__init__(a) # 无参数调用super()
: N4 B$ ]" O3 K$ s7 A6 P# a>>> d(8); N# Q/ I4 L, Z
c 8
+ R  o: N, ^. s) g" U1 T% S<__main__.d object at 0x00d7ed90>
, @! U5 B( f+ q/ z9 Y3 h( m( Z- j) B4 a; V8 l
更多网站运营信息请查看: 网站运营
作者: tohme    时间: 2016-1-16 18:22
我只是为了十万积分默默奋斗。
作者: wwdu926a    时间: 2016-1-16 18:22
你可是难得来坐坐啊~~~
作者: mwxny    时间: 2016-1-16 18:23
你还想说什么啊....
作者: bqtklouu    时间: 2016-1-16 18:23
命不能争,运可以造,弱者认命,强者抗命,能者求命,智者造命。
作者: wwdu926a    时间: 2016-1-16 18:23
楼主说的是什么?我是小白,好像还没看明白!
作者: GoodyFouppy    时间: 2016-3-10 09:58
俺灌的不是水,是寂寞啊!
作者: wwdu926a    时间: 2016-3-10 09:58
综上所述,恳请各位官员请勿动用武装力量请勿跨村、跨镇、跨市、跨省、跨国、跨洲、跨星球、跨银河系追捕。确因不抓不足以平民愤,或不抓就领不到薪水养家户口的公职人员,建议携带工作证
作者: gevaemaidovef    时间: 2016-3-10 09:59
什么?????不知道......
作者: buingeEvineus    时间: 2016-3-10 09:59
一骂人就激动....
作者: mwxny    时间: 2016-3-10 09:59
估计你是没见识过~` 呵呵




欢迎光临 得知互动 (https://bbs.dezhifl.com/) Powered by Discuz! X3.4