得知互动
标题:
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, H
2.编码
) A+ M: o4 B% G- u& x
py3.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 ~+ o
3. 语法
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& U
4)整型除法返回浮点数,要得到整型结果,请使用//
. ?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 h
3.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 x
2.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 D
2.x: print (x, y) # 输出repr((x, y))
1 Q" G" k7 x |0 y3 V( ^1 V
3.x: print((x, y)) # 不同于print(x, y)!
2 n3 N& w; j5 x- s
7)改变了顺序操作符的行为,例如x
4 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 X
9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了
0 V6 s d3 n1 W. e# v- J
10)新式的8进制字变量,相应地修改了oct()函数。
% `# ~2 [3 O" I0 Z
2.x的方式如下:
6 M. t/ E8 j* `$ O2 E0 n
>>> 0666
7 j3 t' V9 q( n$ k
438
0 c2 J3 ^6 o* q8 T
>>> oct(438)
4 X2 X; U6 R3 o) j
'0666'
% t: B: P }+ X% C
3.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
>>> 0o666
0 `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 x
11)增加了 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, Y
def __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; o
def __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