為進(jìn)一步提起你的胃口,以下是Python3具備的一些優(yōu)點(diǎn)。
1.Print不再是語(yǔ)句而是內(nèi)置函數(shù)
好處在于:
確實(shí)沒(méi)有理由讓print作為一個(gè)語(yǔ)句存在,如果print是一個(gè)函數(shù)會(huì)更加統(tǒng)一。
因?yàn)閜rint是一個(gè)函數(shù),因此可以將其作為參數(shù)傳遞給需要它的函數(shù)。以一個(gè)函數(shù)為例,它需要另一個(gè)函數(shù)進(jìn)一步處理數(shù)據(jù)作為參數(shù)。為簡(jiǎn)單地對(duì)它實(shí)現(xiàn)模擬/調(diào)試,你現(xiàn)在可以直接傳遞一個(gè)print()函數(shù)。
可以像這樣用print:[print(x)forxinrange(10)],因?yàn)楝F(xiàn)在它是一個(gè)函數(shù)。
可以通過(guò)指定builtins.print來(lái)覆寫print函數(shù),而對(duì)于語(yǔ)句就不能這么做了。2.Unicode
在Python3中,每個(gè)字符串默認(rèn)都是Unicode字符串。在Python2中,字符串默認(rèn)為ASCII字符串,這限制了它可以處理的字符范圍。如果需要Unicode字符串,則必須這樣創(chuàng)建:
#Python3中不再需要unicode_sting=u'ümlaut?Nōprōblem!'
這在許多國(guó)家是必需的。
3.數(shù)據(jù)類
從3.7版本(相當(dāng)新版本)開(kāi)始,Python提供數(shù)據(jù)類(dataclasses)。與常規(guī)類或其他替代方法相比,它有一些優(yōu)點(diǎn),例如返回多個(gè)值或字典:
數(shù)據(jù)類(dataclasses)需要的代碼量最少
實(shí)現(xiàn)了__eq__,所以可以對(duì)比數(shù)據(jù)類(dataclasses)
實(shí)現(xiàn)了__repr__,可以輕松打印出一個(gè)數(shù)據(jù)類
數(shù)據(jù)類需要類型提示,能減少錯(cuò)誤的發(fā)生以下是實(shí)踐中數(shù)據(jù)類(dataclasses)的示例:
fromdataclassesimportdataclass@dataclassclassCard:rank:strsuit:strcard=Card("Q","hearts")print(card==card)#Trueprint(card.rank)#'Q'print(card)Card(rank='Q',suit='hearts')
4.合并字典
從Python3.5起,合并字典變得更容易:
dict1={'a':1,'b':2}dict2={'b':3,'c':4}merged={**dict1,**dict2}print(merged)#{'a':1,'b':3,'c':4}
如果存在重疊的鍵,則第一個(gè)字典中的鍵將被覆蓋。
5.除法變得更加可預(yù)見(jiàn)
在Python2中,除法運(yùn)算符(/)默認(rèn)為整數(shù)除法,除非操作數(shù)之一是浮點(diǎn)數(shù)。因此有以下行為:
#Python25/2=25/2.0=2.5
在Python3中,除法運(yùn)算符默認(rèn)為浮點(diǎn)除法,//運(yùn)算符變?yōu)檎麛?shù)除法。這樣我們會(huì)得到:
Python35/2=2.55//2=2
6.有意義的比較
在Python2中,可以對(duì)所有內(nèi)容進(jìn)行比較。以下示例將全部返回True:
print"astring">2printNone<5
它沒(méi)有意義,并且可能將錯(cuò)誤隱藏。
在Python3中,這些比較將引發(fā)TypeError異常。
7.不再有rangevs.xrange
Python2有兩個(gè)range函數(shù):range和xrange,后者更快,因?yàn)樗膶?shí)現(xiàn)基于迭代器。
在Python3中,range已變?yōu)閤range,并且刪除了xrange名稱。在這個(gè)地方,Python減少了學(xué)習(xí)者的困惑。
以上內(nèi)容為大家介紹了Python3的優(yōu)點(diǎn),希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.jsszjs.cn/