得知互动

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

作者: swmozowtfl    时间: 2015-7-28 11:33
标题: python 2和python 3有什么区别?
到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!
4 F- p& k% ~& _* A& |+ z搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别。. B# d' q. J+ Z6 s/ s
1.性能5 ^) v; \. |2 @6 z) J( `, T; C( o. Z
py3.0运行 pystone benchmark的速度比py2.5慢30%。guido认为py3.0有极大的优化空间,在字符串和整形操作上可
; R5 q, i; e( b0 I$ C3 r; P7 K  H) ~3 a以取得很好的优化结果。3 e7 p6 t8 W% o4 E( |: E
py3.1性能比py2.5慢15%,还有很大的提升空间。
* R! N' R3 V$ {/ U& G4 n9 N, H2.编码
) A+ M: o4 B% G- u& xpy3.x源码文件默认使用utf-8编码,这就使得以下代码是合法的:( ?% _  C9 h5 y1 E; A, W
>>> 中国 = 'china'
: t0 I/ M. ^3 C/ h4 Q2 F>>>print(中国)0 V7 v+ M7 R" M
china
# @3 a0 X7 ~+ o3. 语法3 G" E  C* M& r6 k+ q* p& g( j
1)去除了<>,全部改用!=4 Y" {, q1 j" a2 E+ u
2)去除``,全部改用repr()) {& Z2 I. M. t* `) F. `) l
3)关键词加入as 和with,还有true,false,none
; `- p( E: F& U4)整型除法返回浮点数,要得到整型结果,请使用//
. ?1 z0 r3 p: @2 ~5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量9 @) F2 G$ c, o1 J9 ~
6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数
# T; C; s5 i8 ?* p* f- j7 o8 C例如:5 d6 q2 Z- N/ i2 }" R( L- J% j/ g
2.x: print the answer is, 2*2
; i$ q9 l8 k' L" C& l8 C1 o# G7 R8 u4 h3.x: print(the answer is, 2*2)6 F) C* |; t+ N0 T+ l- E8 E
2.x: print x, # 使用逗号结尾禁止换行# e  P" T, |3 b
3.x: print(x, end= ) # 使用空格代替换行
5 Z' y; ]2 y5 x2.x: print # 输出新行
! ?; r( k  h6 v- n' }3.x: print() # 输出新行. Y8 ~8 m1 y: K0 V) K
2.x: print >>sys.stderr, fatal error% I$ M+ }0 l" z0 @2 I+ v: m( k' Y
3.x: print(fatal error, file=sys.stderr)
' A9 R" J, G* W+ q$ E6 ^5 D2.x: print (x, y) # 输出repr((x, y))
1 Q" G" k7 x  |0 y3 V( ^1 V3.x: print((x, y)) # 不同于print(x, y)!2 n3 N& w; j5 x- s
7)改变了顺序操作符的行为,例如x4 b" h: a: `3 p( w( G
8)输入函数改变了,删除了raw_input,用input代替:! ~: U- B! T7 V! b: u8 F
2.x:guess = int(raw_input('enter an integer : ')) # 读取键盘输入的方法
* E9 i" L2 l0 r5 O/ V- }& _3.x:guess = int(input('enter an integer : '))
% i' T+ S6 w4 X9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了
0 V6 s  d3 n1 W. e# v- J10)新式的8进制字变量,相应地修改了oct()函数。% `# ~2 [3 O" I0 Z
2.x的方式如下:
6 M. t/ E8 j* `$ O2 E0 n>>> 0666
7 j3 t' V9 q( n$ k4380 c2 J3 ^6 o* q8 T
>>> oct(438)4 X2 X; U6 R3 o) j
'0666'
% t: B: P  }+ X% C3.x这样:
% d) L" c4 Z' m' v) L>>> 0666
0 D6 x; x# W! M, u  @syntaxerror: invalid token (, @9 V3 {, w7 w  k/ L4 c
>>> 0o6660 `8 ~3 ?: p  H% i4 l# A) B! f. m, [+ x
438; Y/ M* H8 P$ U1 f
>>> oct(438)/ y+ ?/ s8 ~- V5 K* s% `; Y
'0o666'
1 L) P0 F* @! G) V6 i7 x11)增加了 2进制字面量和bin()函数  Z- Q1 D! C: ?$ Y* K) M5 }& T/ I  ]
>>> bin(438)
' {+ O9 H* O( X7 z2 r. j'0b110110110'* x  X+ F9 U, p# Z0 q& \3 M
>>> _438 = '0b110110110'0 p6 k' P, ]. o5 L
>>> _438
4 r: \2 u& p1 G, ]$ V* ~/ Q" u'0b110110110'6 b! M; a, G. c/ \& w, e6 X! |
12)扩展的可迭代解包。在py3.x 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list" Q3 \& i* F) D
对象和seq是可迭代的。, [% c3 E1 J: e8 O+ B
13)新的super(),可以不再给super()传参数,0 n# Z, Y4 U; U9 y$ N& e* `
>>> class c(object):
5 i" Q) b/ a8 q, Ydef __init__(self, a):3 f$ s6 t- Q6 d
print('c', a)
5 |/ k) N: Z$ b- }" ?2 \>>> class d(c):
; A8 g( H2 u; odef __init(self, a):' n( X, Y& x; a( S) t6 }
super().__init__(a) # 无参数调用super()) K6 N4 Y8 e: }' w! c
>>> d(8): x. l2 y7 P1 f9 Q& o* v
c 8+ h3 ?2 Y/ f, _1 |7 ]# ~- u
<__main__.d object at 0x00d7ed90>
- M$ h5 V  _6 g" p# T0 X/ P; S/ h
更多网站运营信息请查看: 网站运营
作者: 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