Python2.x和3.x的主要區(qū)別

版本說(shuō)明

Python 3.0在設(shè)計(jì)的時(shí)候沒(méi)有考慮向較早版本相容
Python 2.6作為一個(gè)過(guò)渡版本并齐,基本使用了Python 2.x的語(yǔ)法和庫(kù)蹦误,同時(shí)考慮了向Python 3.0的遷移辰如,允許使用部分Python 3.0的語(yǔ)法與函數(shù)嘱腥。
除非為了使用舊的Python2.x項(xiàng)目代碼或只支持2.x的第三方庫(kù)殿雪,否則不推薦使用2.x進(jìn)行編程

死人的print函數(shù)

Python 2.6與Python 2.7里面钧栖,以下三種形式是等價(jià)的:

print "fish"
print ("fish") #注意print后面有個(gè)空格
print("fish") #print()不能帶有任何其它參數(shù)

但python3.x只能使用后兩者嘿悬,print語(yǔ)句被python3廢棄实柠,只能使用print函數(shù)

Unicode

Python3中字符串是Unicode (utf-8)編碼,支持中文做標(biāo)識(shí)符善涨。
python2中是ASCII編碼窒盐,需要更改字符集才能正常支持中文,所以在.py文件中會(huì)看到#-- coding: UTF-8 --钢拧。

#python3中
>>> 中國(guó) = 'china' 
>>>print(中國(guó)) 
china

#python2中
>>> str = "我愛(ài)北京天安門(mén)"
>>> str
'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'
>>> str = u"我愛(ài)北京天安門(mén)"
>>> str
u'\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8'

除法運(yùn)算

單斜杠/,Python2中整數(shù)相除得整數(shù)蟹漓,浮點(diǎn)小數(shù)相除得浮點(diǎn);Python3中結(jié)果總是浮點(diǎn)數(shù)娶靡。

#python3
>>print(10/5)
2.0

雙斜杠//,Python2和3相同牧牢,都是除法結(jié)果去掉小數(shù)部分

>>print(10//3)
3

異常處理

Python2中try:...except ERR,e:...,在Python3中改為了try:...except ERR as e:...

#Python3
try:
    open('a.txt','r')
except Exception as e:
    print(e) #這里也不要使用e.message

python 2中觸發(fā)異匙硕В可以用raise IOError, "file error"或raise IOError("file error")兩種方式塔鳍。
python 3中觸發(fā)異常只能用raise IOError("file error")。
異常StandardError 被Python3廢棄呻此,統(tǒng)一使用Exception

xrange和range

Python3中不再使用xrange方法轮纫,只有range方法
range在Python2中返回列表,而在Python3中返回range可迭代對(duì)象

a=range(10)
print(a)
print(list(a))

輸出

range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

八進(jìn)制字面量

Python3中只能使用0o...格式焚鲜,對(duì)于01000格式將拋出錯(cuò)誤,而在Python2中兩種都能使用

>>> 01000
  File "<stdin>", line 1
    01000
        ^
SyntaxError: invalid token
>>> 0o1000
512

不等運(yùn)算符

在Python2中有兩個(gè)不等運(yùn)算符!=和<>掌唾,在Python3中去掉了<>放前,只有!=符號(hào)表示不等。

repr

在Python2中雙反引號(hào)``可以替代repr函數(shù)糯彬,在Python3中去掉了雙反引號(hào)的表是方法凭语,只能用repr方法

模塊改名

StringIO模塊現(xiàn)在被合并到新的io模組內(nèi)。 new, md5, gopherlib等模塊被刪除撩扒。
httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包內(nèi)似扔。
取消了exec語(yǔ)句,只剩下exec()函數(shù)搓谆。

long類型

在Python2中l(wèi)ong是比int取值范圍更大的整數(shù)炒辉,Python3中取消了long類型,int的取值范圍擴(kuò)大到之前的long類型范圍

bytes類型

Python3新增了bytes類型,使用b開(kāi)頭的字符串定義:

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

str對(duì)象和bytes對(duì)象可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互轉(zhuǎn)化泉手。

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

dict類型

Python3中dict的.keys()黔寇、.items 和.values()方法返回迭代器,而之前的iterkeys()等函數(shù)都被廢棄斩萌。
同時(shí)去掉的還有 dict.has_key()缝裤,可以用in來(lái)代替。

di={
    'a':1,
    'b':2,
    'c':3
}
for item in d.items():
    print(item)
print('c' in di)

輸出

('gggg', {'a1': 1})
('b', 12)
True

next()函數(shù)和.next()方法

my_generator = (letter for letter in 'abcdefg')
python 2中可以用 next(my_generator) 和 my_generator.next() 兩種方式术裸。
python 3中只能用 next(my_generator)這種方式倘是。

列表推導(dǎo)

不再支持[n for n in a,b]語(yǔ)法,改為[n for n in (a,b)][n for n in [a,b]]

a=1
b=2
c=[n for n in [a,b]]
print(c)

輸出[1,2]

input

python 2 中通過(guò)input 輸入的類型是 int袭艺,只有通過(guò) raw_input()輸入的類型才是str.
python 3中通過(guò)input輸入的類型都是是str搀崭,去掉了row_input()方法。

比較符

Python 2 中任意兩個(gè)對(duì)象都可以比較猾编,11 < 'test'返回True
Python 3中只有同一數(shù)據(jù)類型的對(duì)象可以比較瘤睹,11 < 'test'報(bào)錯(cuò),需要調(diào)用正則判斷答倡,改為import re;11 < int('test') if re.compile('^[0-9]+$').match('test') else 0否則就報(bào)錯(cuò)

其他

exec語(yǔ)句被python3廢棄轰传,統(tǒng)一使用exec函數(shù)

execfile語(yǔ)句被Python3廢棄,推薦使用exec(open("./filename").read())

Python3中這些方法不再返回list對(duì)象:dictionary關(guān)聯(lián)的keys()瘪撇、values()获茬、items(),zip()倔既,map()恕曲,filter(),但是可以通過(guò)list強(qiáng)行轉(zhuǎn)換

迭代器iterator的next()函數(shù)被Python3廢棄渤涌,統(tǒng)一使用next(iterator)

file函數(shù)被Python3廢棄佩谣,統(tǒng)一使用open來(lái)處理文件,可以通過(guò)io.IOBase檢查文件類型

apply函數(shù)被Python3廢棄

更多內(nèi)容請(qǐng)你在實(shí)踐中慢慢體會(huì)实蓬。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茸俭,一起剝皮案震驚了整個(gè)濱河市吊履,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌调鬓,老刑警劉巖艇炎,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異腾窝,居然都是意外死亡冕臭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)燕锥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人悯蝉,你說(shuō)我怎么就攤上這事归形。” “怎么了鼻由?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵暇榴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蕉世,道長(zhǎng)蔼紧,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任狠轻,我火速辦了婚禮奸例,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘向楼。我一直安慰自己查吊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布湖蜕。 她就那樣靜靜地躺著逻卖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昭抒。 梳的紋絲不亂的頭發(fā)上评也,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音灭返,去河邊找鬼盗迟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛婆殿,可吹牛的內(nèi)容都是我干的诈乒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼婆芦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼怕磨!你這毒婦竟也來(lái)了喂饥?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肠鲫,失蹤者是張志新(化名)和其女友劉穎员帮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體导饲,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捞高,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渣锦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硝岗。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖袋毙,靈堂內(nèi)的尸體忽然破棺而出型檀,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站甥绿,受9級(jí)特大地震影響偏陪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧无埃,春花似錦、人聲如沸蝎困。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)禾乘。三九已至澎埠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間始藕,已是汗流浹背蒲稳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伍派,地道東北人江耀。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像诉植,于是被迫代替她去往敵國(guó)和親祥国。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容