Python 3.8是Python語言的最新版本,它適合用於編寫腳本、自動化以及機器學習和Web開發等各類任務。如今Python 3.8已經進入官方的beta階段,這個版本帶來了許多語法改變、內存共享、更有效的序列化和反序列化、改進的字典和更多新功能。python
Python 3.8還引入了許多性能改進。總的來講,咱們即將擁有一個更快、更精確、更一致和更現代的Python。下面是Python 3.8的新功能和最重要的改變。程序員
1.賦值表達式編程
Python 3.8最明顯的變化就是賦值表達式,即:=操做符。賦值表達式能夠將一個值賦給一個變量,即便變量不存在也能夠。它能夠用在表達式中,無需做爲單獨的語句出現。緩存
while (line := file.readline()) != "end": print(chunk)
上例中,若是變量line不存在則會被建立,而後將file.readline()的返回值賦給它。而後檢查line是否爲"end"。若是不是,則讀取下一行,保存在line中,而後繼續測試。網絡
賦值表達式遵循了Python一向簡潔的傳統,就像列表解析式同樣。其目的在於避免在特定的Python編程模式中出現一些枯燥的樣板代碼。例如,上述代碼用通常寫法須要多寫兩行代碼。數據結構
2.僅經過位置指定的參數框架
僅經過位置指定的參數是函數定義中的一個新語法,可讓程序員強迫某個參數只能經過位置來指定。這樣能夠解決Python函數定義中哪一個參數是位置參數、哪一個參數是關鍵字參數的模糊性。機器學習
僅經過位置指定的參數能夠用於以下狀況:某個函數接受任意關鍵字參數,但也能接受一個或多個未知參數。Python的內置函數一般都是這種狀況,因此容許程序員這樣作,能加強Python語言的一致性。函數
Python文檔中給出的例子以下:工具
def pow(x, y, z=None, /): r = x**y if z is not None: r %= z return r
符號 / 分隔了位置參數和關鍵字參數。在這個例子中,全部參數都是未知參數。在之前版本的Python中,z會被認爲是關鍵字參數。但採用上述函數定義,pow(2, 10)和pow(2, 10, 5)都是正確的調用方式,而pow(2, 10, z=5)是不正確的。
3.支持f字符串調試
f字符串格式能夠更方便地在同一個表達式內進行輸出文本和值或變量的計算,並且效率更高。
x = 3 print(f'{x+1}')
輸出4。
在f字符串表達式末未添加=能夠輸出f表達式自己的值,後面是計算後的值
x = 3 print (f'{x+1=}')
輸出爲x+1=4。
4.多進程共享內存
在Python 3.8中,multiprocessing模塊提供了SharedMemory類,能夠在不一樣的Python進城之間建立共享的內存區域。
在舊版本的Python中,進程間共享數據只能經過寫入文件、經過網絡套接字發送,或採用Python的pickle模塊進行序列化等方式。共享內存提供了進程間傳遞數據的更快的方式,從而使得Python的多處理器和多內核編程更有效率。
共享內存片斷能夠做爲單純的字節區域來分配,也能夠做爲不可修改的相似於列表的對象來分配,其中能保存數字類型、字符串、字節對象、None對象等一小部分Python對象。
5.Typing模塊的改進
Python是動態類型語言,但能夠經過typing模塊添加類型提示,以便第三方工具驗證Python代碼。Python 3.8給typing添加了一些新元素,所以它可以支持更健壯的檢查:
6.新版本的pickle協議
Python的pickle模塊提供了一種序列化和反序列化Python數據結構或實例的方法,能夠將字典原樣保存下來供之後讀取。不一樣版本的Python支持的pickle協議不一樣,而最新版本的支持範圍更廣、更強大、更有效的序列化。
Python 3.8引入的第5版pickle協議能夠用一種新方法pickle對象,它能支持Python的緩衝區協議,如bytes、memoryviews或Numpy array等。新的pickle避免了許多在pickle這些對象時的內存複製操做。
NumPy、Apache Arrow等外部庫在各自的Python綁定中支持新的pickle協議。新的pickle也能夠做爲Python 3.6和3.7的插件使用,能夠從PyPI上安裝。
7.可反轉字典
Python3.6中重寫了字典,其使用了PyPy項目貢獻的一個新實現。除了更快、更緊湊以外,如今的字典還會繼承元素的順序——元素會按照添加的順序排列,就像列表同樣。Python 3.8還容許在字典上使用reversed()。
8.性能改進
9.Python C API和CPython實現
Python最近的版本在CPython(C語言編寫的Python的參考實現)中使用的C API重構方面下了很大功夫。到目前爲止這些工做還在不斷添加,現有的成果包括:
10.如何下載Python 3.8
從Python 軟件基金會下載Python 3.8 beta版:https://www.python.org/downloads/release/python-380b1/