為進一步提起你的胃口,以下是Python3具備的一些優點。
1.Print不再是語句而是內置函數
好處在于:
確實沒有理由讓print作為一個語句存在,如果print是一個函數會更加統一。
因為print是一個函數,因此可以將其作為參數傳遞給需要它的函數。以一個函數為例,它需要另一個函數進一步處理數據作為參數。為簡單地對它實現模擬/調試,你現在可以直接傳遞一個print()函數。
可以像這樣用print:[print(x)forxinrange(10)],因為現在它是一個函數。
可以通過指定builtins.print來覆寫print函數,而對于語句就不能這么做了。2.Unicode
在Python3中,每個字符串默認都是Unicode字符串。在Python2中,字符串默認為ASCII字符串,這限制了它可以處理的字符范圍。如果需要Unicode字符串,則必須這樣創建:
#Python3中不再需要unicode_sting=u'ümlaut?Nōprōblem!'
這在許多國家是必需的。
3.數據類
從3.7版本(相當新版本)開始,Python提供數據類(dataclasses)。與常規類或其他替代方法相比,它有一些優點,例如返回多個值或字典:
數據類(dataclasses)需要的代碼量最少
實現了__eq__,所以可以對比數據類(dataclasses)
實現了__repr__,可以輕松打印出一個數據類
數據類需要類型提示,能減少錯誤的發生以下是實踐中數據類(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}
如果存在重疊的鍵,則第一個字典中的鍵將被覆蓋。
5.除法變得更加可預見
在Python2中,除法運算符(/)默認為整數除法,除非操作數之一是浮點數。因此有以下行為:
#Python25/2=25/2.0=2.5
在Python3中,除法運算符默認為浮點除法,//運算符變為整數除法。這樣我們會得到:
Python35/2=2.55//2=2
6.有意義的比較
在Python2中,可以對所有內容進行比較。以下示例將全部返回True:
print"astring">2printNone<5
它沒有意義,并且可能將錯誤隱藏。
在Python3中,這些比較將引發TypeError異常。
7.不再有rangevs.xrange
Python2有兩個range函數:range和xrange,后者更快,因為它的實現基于迭代器。
在Python3中,range已變為xrange,并且刪除了xrange名稱。在這個地方,Python減少了學習者的困惑。
以上內容為大家介紹了Python3的優點,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/