得知互动
标题:
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- d
1.性能
4 @8 W& h, u) J, Z" {7 J
py3.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! y
py3.1性能比py2.5慢15%,还有很大的提升空间。
$ l: [# L+ H6 e& k) K* w; f7 R$ t
2.编码
) S. v P, _6 P: G
py3.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' k
china
0 S9 f2 R& S) J: N; @1 N) u
3. 语法
* S$ r% f- m5 `1 i
1)去除了<>,全部改用!=
9 }( K) v; |- }$ u" q" D) j
2)去除``,全部改用repr()
& N. ?) l0 Y) _+ `+ Y0 q7 ^
3)关键词加入as 和with,还有true,false,none
. P( ~! z4 e K: p
4)整型除法返回浮点数,要得到整型结果,请使用//
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) S
2.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/ W
2.x: print x, # 使用逗号结尾禁止换行
& P! Z- v2 H t4 Q/ h
3.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; y
2.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: T
3.x: print((x, y)) # 不同于print(x, y)!
: S$ x2 P1 C# P) m. ^5 y0 Q- o
7)改变了顺序操作符的行为,例如x
) z% }" b- o. K. k6 f
8)输入函数改变了,删除了raw_input,用input代替:
r7 ?7 l/ Q( y5 d$ y2 K
2.x:guess = int(raw_input('enter an integer : ')) # 读取键盘输入的方法
/ @! H- u/ r& Z, O8 K) B
3.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 @
438
1 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
>>> 0666
0 m k; ]9 }! \9 s
syntaxerror: invalid token (
! l' w6 A: C' z
>>> 0o666
. q# x% S) r- j5 N8 t: A2 s9 [9 K
438
}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 F
11)增加了 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, @) g
print('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/ z
9 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