亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python2.x與Python3.x的區別

2020-01-04 17:51:02
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Python2.x與Python3.x的區別的相關資料,需要的朋友可以參考下
 

Python的3??.0版本,常被稱為Python 3000,或簡稱Py3k。相對于Python的早期版本,這是一個較大的升級。

為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。

許多針對早期Python版本設計的程式都無法在Python 3.0上正常執行。

為了照顧現有程式,Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。

新的Python程式建議使用Python 3.0版本的語法。

除非執行環境無法安裝Python 3.0或者程式本身使用了不支援Python 3.0的第三方庫。目前不支援Python 3.0的第三方庫有Twisted, py2exe, PIL等。

大多數第三方庫都正在努力地相容Python 3.0版本。即使無法立即使用Python 3.0,也建議編寫相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7來執行。

1.性能

Py3.0運行 pystone benchmark的速度比Py2.5慢30%。Guido認為Py3.0有極大的優化空間,在字符串和整形操作上可 
以取得很好的優化結果。 

Py3.1性能比Py2.5慢15%,還有很大的提升空間。

2.編碼

Py3.X源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的: 
>>> 中國 = 'china' 
>>>print(中國) 
china

3. 語法

1)去除了<>,全部改用!= 
2)去除``,全部改用repr() 
3)關鍵詞加入as 和with,還有True,False,None 
4)整型除法返回浮點數,要得到整型結果,請使用// 
5)加入nonlocal語句。使用noclocal x可以直接指派外圍(非全局)變量 
6)去除print語句,加入print()函數實現相同的功能。同樣的還有 exec語句,已經改為exec()函數

例如: 

2.X: print "The answer is", 2*2 
3.X: print("The answer is", 2*2) 
2.X: print x, # 使用逗號結尾禁止換行 
3.X: print(x, end=" ") # 使用空格代替換行 
2.X: print # 輸出新行 
3.X: print() # 輸出新行 
2.X: print >>sys.stderr, "fatal error" 
3.X: print("fatal error", file=sys.stderr) 
2.X: print (x, y) # 輸出repr((x, y)) 
3.X: print((x, y)) # 不同于print(x, y)! 
7)改變了順序操作符的行為,例如x<y,當x和y類型不匹配時拋出TypeError而不是返回隨即的 bool值 
8)輸入函數改變了,刪除了raw_input,用input代替: 
2.X:guess = int(raw_input('Enter an integer : ')) # 讀取鍵盤輸入的方法 
3.X:guess = int(input('Enter an integer : ')) 9)去除元組參數解包。不能def(a, (b, c)):pass這樣定義函數了 
10)新式的8進制字變量,相應地修改了oct()函數。

2.X的方式如下:

>>> 0666 
438 
>>> oct(438) 
'0666' 

3.X這樣:

>>> 0666 
SyntaxError: invalid token (<pyshell#63>, line 1) 
>>> 0o666 
438 
>>> oct(438) 
'0o666'

11)增加了 2進制字面量和bin()函數 

>>> bin(438) 
'0b110110110' 
>>> _438 = '0b110110110' 
>>> _438 
'0b110110110' 

12)擴展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求兩點:rest是list 
對象和seq是可迭代的。 

13)新的super(),可以不再給super()傳參數, 

>>> class C(object): 
def __init__(self, a): 
print('C', a) 
>>> class D(C): 
def __init(self, a): 
super().__init__(a) # 無參數調用super() 
>>> D(8) 
C 8 
<__main__.D object at 0x00D7ED90>

14)新的metaclass語法: 

class Foo(*bases, **kwds): 
pass 

15)支持class decorator。用法與函數decorator一樣: 

>>> def foo(cls_a): 
def print_func(self): 
print('Hello, world!') 
cls_a.print = print_func 
return cls_a 
>>> @foo 
class C(object): 
pass 
>>> C().print() 
Hello, world! 

class decorator可以用來玩玩貍貓換太子的大把戲。更多請參閱PEP 3129

4. 字符串和字節串

1)現在字符串只有str一種類型,但它跟2.x版本的unicode幾乎一樣。 2)關于字節串,請參閱“數據類型”的第2條目

5.數據類型

1)Py3.X去除了long類型,現在只有一種整型——int,但它的行為就像2.X版本的long 

2)新增了bytes類型,對應于2.X版本的八位串,定義一個bytes字面量的方法如下: 

>>> b = b'china' 
>>> type(b) 
<type 'bytes'> 

str對象和bytes對象可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互轉化。 

>>> s = b.decode() 
>>> s 
'china' 
>>> b1 = s.encode() 
>>> b1 
b'china' 

3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函數都被廢棄。同時去掉的還有 
dict.has_key(),用 in替代它吧

6.面向對象

1)引入抽象基類(Abstraact Base Classes,ABCs)。 
2)容器類和迭代器類被ABCs化,所以cellections模塊里的類型比Py2.5多了很多。 

>>> import collections 
>>> print('/n'.join(dir(collections))) 
Callable 
Container 
Hashable 
ItemsView 
Iterable 
Iterator 
KeysView 
Mapping 
MappingView 
MutableMapping 
MutableSequence 
MutableSet 
NamedTuple 
Sequence 
Set 
Sized

ValuesView 
__all__ 
__builtins__ 
__doc__ 
__file__ 
__name__ 
_abcoll 
_itemgetter 
_sys 
defaultdict 
deque

另外,數值類型也被ABCs化。關于這兩點,請參閱 PEP 3119和PEP 3141。

3)迭代器的next()方法改名為__next__(),并增加內置函數next(),用以調用迭代器的__next__()方法 
4)增加了@abstractmethod和 @abstractproperty兩個 decorator,編寫抽象方法(屬性)更加方便。

7.異常

1)所以異常都從 BaseException繼承,并刪除了StardardError 
2)去除了異常類的序列行為和.message屬性 
3)用 raise Exception(args)代替 raise Exception, args語法 
4)捕獲異常的語法改變,引入了as關鍵字來標識異常實例,在Py2.5中: 

>>> try: 
... raise NotImplementedError('Error') 
... except NotImplementedError, error: ... print error.message 
... 
Error 
在Py3.0中: 
>>> try: 
raise NotImplementedError('Error') 
except NotImplementedError as error: #注意這個 as 
print(str(error)) 
Error 

5)異常鏈,因為__context__在3.0a1版本中沒有實現

8.模塊變動

1)移除了cPickle模塊,可以使用pickle模塊代替。最終我們將會有一個透明高效的模塊。 
2)移除了imageop模塊 
3)移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2, 
rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模塊 
4)移除了bsddb模塊(單獨發布,可以從http://www.jcea.es/programacion/pybsddb.htm獲取) 
5)移除了new模塊 
6)os.tmpnam()和os.tmpfile()函數被移動到tmpfile模塊下 
7)tokenize模塊現在使用bytes工作。主要的入口點不再是generate_tokens,而是 tokenize.tokenize()

9.其它

1)xrange() 改名為range(),要想使用range()獲得一個list,必須顯式調用: 
>>> list(range(10)) 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

2)bytes對象不能hash,也不支持 b.lower()、b.strip()和b.split()方法,但對于后兩者可以使用 b.strip(b' /n/t/r /f')和b.split(b' ‘)來達到相同目的 

3)zip()、map()和filter()都返回迭代器。而apply()、 callable()、coerce()、 execfile()、reduce()和reload 
()函數都被去除了現在可以使用hasattr()來替換 callable(). hasattr()的語法如:hasattr(string, '__name__')

4)string.letters和相關的.lowercase和.uppercase被去除,請改用string.ascii_letters 等 

5)如果x < y的不能比較,拋出TypeError異常。2.x版本是返回偽隨機布爾值的 

6)__getslice__系列成員被廢棄。a[i:j]根據上下文轉換為a.__getitem__(slice(I, j))或 __setitem__和 
__delitem__調用 

7)file類被廢棄,在Py2.5中: 

>>> file 
<type 'file'> 

在Py3.X中: 

>>> file 
Traceback (most recent call last): 
File "<pyshell#120>", line 1, in <module> 
file 
NameError: name 'file' is not defined 

python2.x與python3.x在除法運算上的區別

Python中的除法較其它語言顯得非常高端,有套很復雜的規則。Python中的除法有兩個運算符,/和//

首先來說/除法:

在python 2.x中/除法就跟我們熟悉的大多數語言,比如Java啊C啊差不多,整數相除的結果是一個整數,把小數部分完全忽略掉,浮點數除法會保留小數點的部分得到一個浮點數的結果。

在python 3.x中/除法不再這么做了,對于整數之間的相除,結果也會是浮點數。

Python 2.x:

>>> 1 / 2
0
>>> 1.0 / 2.0
0.5

Python 3.x:

>>> 1/2
0.5
而對于//除法,這種除法叫做floor除法,會對除法的結果自動進行一個floor操作,在python 2.x和python 3.x中是一致的。

python 2.x:

>>> -1 // 2
-1

python 3.x:

>>> -1 // 2
-1

注意的是并不是舍棄小數部分,而是執行floor操作,如果要截取小數部分,那么需要使用math模塊的trunc函數

python 3.x:

>>> import math
>>> math.trunc(1 / 2)
0
>>> math.trunc(-1 / 2)
0

以上內容給大家介紹了Python2.x與Python3.x的區別,希望對大家有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91福利视频在线观看| 亚洲电影免费观看高清| 在线日韩日本国产亚洲| 国产欧美日韩专区发布| 亚洲精品成a人在线观看| 欧美激情视频一区二区| 精品无码久久久久久国产| 亚洲第一区第一页| 欧美超级免费视 在线| 一区二区成人精品| 久久精品国产综合| 国产日韩欧美视频| 91麻豆国产语对白在线观看| 日韩电影大片中文字幕| 国产成人在线一区| 久久这里只有精品视频首页| 亚洲欧美精品在线| 黑人与娇小精品av专区| 亚洲欧美国产va在线影院| www.欧美精品一二三区| 日韩美女av在线免费观看| 日韩av在线网页| 欧洲亚洲在线视频| 欧美极品欧美精品欧美视频| 国产99久久精品一区二区永久免费| 国产69精品久久久| 亚洲激情在线视频| 国产成人精品免费久久久久| 色哟哟网站入口亚洲精品| 国产日韩欧美影视| 91av在线影院| 91视频九色网站| 国产精品视频在线观看| 九九久久久久99精品| 日韩免费在线观看视频| 久久久国产精品免费| 国产精品一香蕉国产线看观看| 亲子乱一区二区三区电影| 日韩欧美中文第一页| 亚洲欧美另类国产| 日韩视频亚洲视频| 国产精品日韩欧美| 精品亚洲一区二区三区在线观看| 欧美午夜xxx| 55夜色66夜色国产精品视频| 欧美激情精品久久久久久蜜臀| 欧美国产一区二区三区| 国产精品色午夜在线观看| 亚洲国产第一页| 在线观看免费高清视频97| 精品久久久久久中文字幕大豆网| 97精品欧美一区二区三区| 亚洲free性xxxx护士hd| 亚洲色图在线观看| 欧美电影免费观看网站| 色综合视频网站| 亚洲视频专区在线| 日韩av在线免费播放| 少妇av一区二区三区| 亚洲国产欧美久久| 精品调教chinesegay| 色偷偷888欧美精品久久久| 久久久久久久久网站| 国产在线拍揄自揄视频不卡99| 日韩黄色在线免费观看| 一色桃子一区二区| 国产精品激情av在线播放| 国产精品视频26uuu| 国产精品福利片| 日韩精品黄色网| 日韩精品视频中文在线观看| 最近2019中文字幕在线高清| 中文字幕欧美国内| 色偷偷av一区二区三区乱| 久久99久久99精品免观看粉嫩| 美女扒开尿口让男人操亚洲视频网站| 国产日产久久高清欧美一区| 国产婷婷97碰碰久久人人蜜臀| 久久久久国色av免费观看性色| 日韩精品在线观看一区| 欧美日韩一区二区三区在线免费观看| 在线视频日本亚洲性| 欧美视频在线观看免费| 久久亚洲精品视频| 欧美日韩另类视频| 国产精品第七十二页| 精品国偷自产在线视频99| 国产精品96久久久久久又黄又硬| 日韩av不卡电影| 日韩免费视频在线观看| 日韩精品视频三区| 亚洲国产精品女人久久久| 国产精品成久久久久三级| 欧美高清第一页| 国产日韩精品在线| 91高清视频免费| 国产精品久久久久久久久免费| 欧美成人网在线| 亚洲欧美综合另类中字| 国产精品国产三级国产aⅴ浪潮| 久久久久五月天| 精品久久久久久久久久ntr影视| 91精品视频大全| 亚洲激情 国产| 欧美国产日本在线| 欧美激情视频给我| 国产精品自产拍在线观看| 欧美激情精品久久久久久免费印度| 精品久久久国产| 精品网站999www| 久久精品国产一区二区电影| 中文字幕亚洲欧美日韩2019| 亚洲最大福利网站| 欧美黑人一区二区三区| 国产精品一区二区三区在线播放| 中日韩美女免费视频网址在线观看| 57pao国产成人免费| 欧美午夜影院在线视频| 午夜精品三级视频福利| 8050国产精品久久久久久| 尤物九九久久国产精品的分类| 精品视频一区在线视频| 国产成人精品综合久久久| 亚洲人成网7777777国产| 成人亚洲激情网| 国产精品91视频| 久久精品99久久久香蕉| www.久久色.com| 欧美交受高潮1| 国产一区二区日韩| 成人精品视频在线| 国产日韩在线看片| 日韩中文字幕在线看| 国产日韩精品在线播放| 性欧美长视频免费观看不卡| 久久久久久久久久av| 在线视频欧美性高潮| 国产精品视频播放| 影音先锋欧美在线资源| 91国产视频在线| 国产精品久久久久免费a∨| 亚洲欧美国产va在线影院| 日韩美女av在线免费观看| 成人国内精品久久久久一区| 日韩精品免费看| 久久精品夜夜夜夜夜久久| 久久免费高清视频| 2021国产精品视频| 岛国av一区二区三区| 日韩电影免费观看在线| 精品香蕉在线观看视频一| 裸体女人亚洲精品一区| 欧美日韩精品在线播放| 欧美日韩在线观看视频| 国产精品高清在线观看| 欧美第一黄网免费网站| 国产suv精品一区二区| 中日韩美女免费视频网址在线观看| 九九视频这里只有精品| 一区二区欧美在线| 欧美福利小视频| 国产精品久久久久久久久久新婚| 精品久久久中文| 国产精品∨欧美精品v日韩精品|