得知互动

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

作者: swmozowtfl    时间: 2015-7-28 11:33
标题: python 2和python 3有什么区别?
到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!
/ H; `# _- U) `9 V$ p搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别。
8 A1 y! |7 m8 K1.性能' ?/ V) t2 m) K1 V4 m
py3.0运行 pystone benchmark的速度比py2.5慢30%。guido认为py3.0有极大的优化空间,在字符串和整形操作上可4 y# S( }* B. d8 ^) ?" q/ v  W
以取得很好的优化结果。
- J% e) `- R9 Wpy3.1性能比py2.5慢15%,还有很大的提升空间。" _1 D9 j: P7 r+ q7 p
2.编码7 k3 T4 Q- y5 t$ J# k
py3.x源码文件默认使用utf-8编码,这就使得以下代码是合法的:
7 F+ }- g' g; Q* I' `' O) o; V  P>>> 中国 = 'china'' j( @' Y3 Q( N( S
>>>print(中国)
  }: Q& O! @) M7 m$ i$ i. Zchina$ k2 S, N6 d" C  j8 U6 F
3. 语法
: T; F6 Q& W" i" Q- u. l4 z7 H2 L1)去除了<>,全部改用!=
; `: E; k# C7 K5 t, F; p" U2)去除``,全部改用repr()+ y1 F4 W6 m  W
3)关键词加入as 和with,还有true,false,none
! C) I. L$ G5 ]! w5 V4)整型除法返回浮点数,要得到整型结果,请使用//$ F- q# P! @6 @/ k$ v
5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
0 j  h3 K$ j+ ~$ T% l6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数
- T5 f/ Z! n8 z2 |例如:
4 v% C4 T/ M& G4 r# o2.x: print the answer is, 2*2
/ I$ u1 U/ a" t1 j% C# r3.x: print(the answer is, 2*2)1 O) n1 J9 R8 d8 y* M' Q
2.x: print x, # 使用逗号结尾禁止换行+ w7 X, c6 ^+ M
3.x: print(x, end= ) # 使用空格代替换行; A7 f, @4 S0 n" Z- ~' S
2.x: print # 输出新行
) L8 m9 ]5 R& I3.x: print() # 输出新行; t! l: t  w! k2 M/ P- Z( n
2.x: print >>sys.stderr, fatal error. q6 ?( w1 I; f3 T9 l4 q
3.x: print(fatal error, file=sys.stderr): b: o) y- @# D  K9 W
2.x: print (x, y) # 输出repr((x, y))
1 t% K& Q# T2 B+ c4 y: S6 W: O3.x: print((x, y)) # 不同于print(x, y)!
* j" A& x% y6 [% q: J! _( x7)改变了顺序操作符的行为,例如x0 M# Y% P2 Q! V* P! `
8)输入函数改变了,删除了raw_input,用input代替:, G9 I; ^' @, w# V  r+ E+ W: a" S
2.x:guess = int(raw_input('enter an integer : ')) # 读取键盘输入的方法9 i8 i2 [5 u+ Z+ v. ^
3.x:guess = int(input('enter an integer : '))
$ S, \7 h9 F% ~$ Q- A0 e9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了
# S  D( M) E  z! a10)新式的8进制字变量,相应地修改了oct()函数。
! a$ Z7 P" {+ i0 j7 a7 `; I" v2.x的方式如下:6 K7 y% |8 x* I9 E0 u# i& Y
>>> 0666
/ v' E! o& L$ X438* O. r* B, T- o+ Y; f
>>> oct(438)
# g' d1 V5 H1 G4 Y2 l'0666'9 ?' K3 p% ^  o' h8 e& [
3.x这样:& ^  s- |6 e: o. M% W# I
>>> 0666# T$ _6 H* B* a" A  e0 y
syntaxerror: invalid token (
$ H3 J- d7 G% t# c" c1 A>>> 0o666
- {# H. Y/ N' s6 @4 b7 P438
; V2 k$ H- ], C& S; `1 @' _>>> oct(438)
6 Z* v8 m2 a8 Y" x% G'0o666'  Y& Y9 R# ]% F) T2 M2 Y
11)增加了 2进制字面量和bin()函数. y5 B* p8 P4 P1 ]- i
>>> bin(438)
7 {4 ?2 B+ R7 E1 {) C1 _6 b* s'0b110110110'
' ?9 q+ ]8 T+ @  N>>> _438 = '0b110110110'6 X4 B( ?) J& n% G9 T9 e
>>> _438. q* ~0 X1 i: v. k8 W
'0b110110110'
& u  I5 m$ `( c/ A12)扩展的可迭代解包。在py3.x 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list
; O" S/ @0 {- a对象和seq是可迭代的。
9 y/ q9 U8 C9 }4 m5 l13)新的super(),可以不再给super()传参数,  ~% ^( ?& m9 r" N$ O; Z9 @: X* F
>>> class c(object):/ t: j" J; U# b% @- h& }: U
def __init__(self, a):! H+ p9 s$ o' Q5 ~# {4 H% J+ @) w
print('c', a)
2 L& Q8 ?: I& a& u: z/ l1 K: W  ^$ I>>> class d(c):
6 M# k  c8 Q8 wdef __init(self, a):: I; O3 l0 b# i- I
super().__init__(a) # 无参数调用super()" y& y+ u- z2 t5 c/ v/ u1 s
>>> d(8)
( J+ R( `9 Z) I" U$ Sc 8- E& @" D7 d0 A7 n9 C: k* c  }
<__main__.d object at 0x00d7ed90>
4 H! `; M, q; }; l  f  m% L& H. `! U6 z$ Q- 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