得知互动

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

作者: swmozowtfl    时间: 2015-7-28 11:33
标题: python 2和python 3有什么区别?
到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!
7 k" L/ r8 Z3 E: O搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别。
, p/ S6 y; b) h1 {# l1.性能8 }+ x7 d* G- W1 H
py3.0运行 pystone benchmark的速度比py2.5慢30%。guido认为py3.0有极大的优化空间,在字符串和整形操作上可
& v, V. Y: U  a以取得很好的优化结果。- F: L0 x( @! q2 `, T- ~# B$ S
py3.1性能比py2.5慢15%,还有很大的提升空间。2 Y4 i* Q0 q3 t! _; C
2.编码4 q1 u& [" r* V; q3 D/ U
py3.x源码文件默认使用utf-8编码,这就使得以下代码是合法的:& I; P7 F. q9 w/ d
>>> 中国 = 'china'+ l- V% X8 P8 i, [- p
>>>print(中国)8 n$ D# A3 N6 C) L  X+ r. B
china
$ |3 t( d. r6 g$ e" p) D3. 语法
* E$ t8 j: c9 _# V3 O' l4 h$ y" t4 E1)去除了<>,全部改用!=8 }8 x( h0 ?3 `9 Q
2)去除``,全部改用repr()& i8 ^5 f, \3 ^$ c& X- v' W
3)关键词加入as 和with,还有true,false,none( k/ F2 E1 T9 `9 F0 c' j' c
4)整型除法返回浮点数,要得到整型结果,请使用//9 B. d/ E& o7 d. h& p) {
5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
* z8 M. j" G. G, t$ l( s- k6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数* x* r# g# M9 q- x0 _3 i& w4 O0 g
例如:
# N8 W; R' G7 U, _) W& |2.x: print the answer is, 2*2; u- Y9 W+ j0 H" @: ]; `
3.x: print(the answer is, 2*2)% n, m. M/ h' m) l, c& i1 R0 n; X) `
2.x: print x, # 使用逗号结尾禁止换行0 q: e( e* O% i* U5 A
3.x: print(x, end= ) # 使用空格代替换行% d0 Y2 u/ O+ p5 E% m
2.x: print # 输出新行$ a5 E8 a7 b  v* |
3.x: print() # 输出新行
& y. Z" ]/ f) `5 ~5 S1 j2.x: print >>sys.stderr, fatal error
( V$ S+ k/ _' c2 x3.x: print(fatal error, file=sys.stderr)6 F3 ]5 E  j/ M' r) S* E* y
2.x: print (x, y) # 输出repr((x, y))
# a+ Y# b& O# @% U3.x: print((x, y)) # 不同于print(x, y)!
: V/ U- m9 e4 [9 i7)改变了顺序操作符的行为,例如x7 j! m' d/ p0 Y. Z$ p. B
8)输入函数改变了,删除了raw_input,用input代替:0 A- z; o$ a- i# t
2.x:guess = int(raw_input('enter an integer : ')) # 读取键盘输入的方法
/ ?1 M  L0 e" r; D' h3.x:guess = int(input('enter an integer : '))
3 W, I, g" _  \3 R) O: S% A9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了$ p7 ?' Y2 O. M2 T. z& N
10)新式的8进制字变量,相应地修改了oct()函数。
+ U1 s! v3 ^+ e6 U2.x的方式如下:' M9 K4 Q% [9 ^) [) D! S
>>> 0666% s& \1 T! e6 U7 v/ S3 q  V
438, Z0 i  c3 W$ n) \& }
>>> oct(438)
" i* c$ f: t1 i( H2 ^1 R( J3 w% u'0666'- U8 N/ ~/ R& }& Y
3.x这样:
9 X" x2 A) h" d6 |) b>>> 06661 X2 z9 e  r1 F
syntaxerror: invalid token (. U% ~, d& N3 M$ J
>>> 0o666% U5 e! ]- @! G3 I; o
438
# ]9 {% S4 B* y. e>>> oct(438)) \6 s9 R, H9 D% I
'0o666'
9 k0 W, I" v/ F, \, R11)增加了 2进制字面量和bin()函数
7 ~" r3 x( u$ y2 ^1 Q>>> bin(438); Y; S' a7 g$ b, d* o: ~* ^7 d
'0b110110110'8 [2 w$ G. ~& J8 b' P
>>> _438 = '0b110110110'9 V2 _7 j" K  Q/ p; Y/ X# c& ]( w
>>> _438
$ p$ e( m0 u3 d7 m* P1 g'0b110110110'( ?. Y2 M' \* J
12)扩展的可迭代解包。在py3.x 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list
% p/ g) r) {& k" y- s- o" \, Z对象和seq是可迭代的。0 D2 t' E1 t* V. `9 D
13)新的super(),可以不再给super()传参数,
  S4 ?" F3 y* O1 i- j8 w' g7 o>>> class c(object):# a) n" [- C, D4 `
def __init__(self, a):! }0 f2 r7 |6 ?) L1 r' p" n
print('c', a)
8 ?. i. I+ }  ?6 `* T>>> class d(c):1 ~$ u/ n' ]' f  j
def __init(self, a):
1 D- h4 B- B/ U: osuper().__init__(a) # 无参数调用super()
/ e+ X- x2 n2 o0 W* t' D- m>>> d(8)
' D) Q9 p" n/ J* U* _& c3 qc 8" n* R6 `' l' z1 ?3 s# ^4 i1 A" E
<__main__.d object at 0x00d7ed90>
  h, @% S: F* F. ?, y1 X
- l% Y: n# Q" m5 Q更多网站运营信息请查看: 网站运营
作者: 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