Python 3.8 新功能-來自社群翻譯貼-個人改進程式碼優化版

kuibatian發表於2019-11-27

Python 3.8是Python程式語言的最新主要版本, 它包含許多新功能和優化。

Python

Python 3.8

Python 3.8的一些新功能包括:

Python

Walrus

在這個新版本中,我們有一種新的賦值運算子,稱為Walrus運算子(:=)。該運算子的優點是可以在一行中設定和返回變數。例如:

sample_data = [
{"id": 1, "name":"bobo"},
{"id": 2, "name":"lili"},
{"id": 3, "name":"aibi"},
{"id": 4, "name":"fashi"},
]

print("使用 Python 3.8 海象:")

for entry in sample_data:
    # 這裡是設定了 並返回了一個name
    # 所以我們可以 if 判斷
    if name := entry.get("name"):
        print(f'Found name = {name}')

print("不使用海象:")
for entry in sample_data:
    # 這裡只能傳統賦值 判斷
    name = entry.get("name")
    if name:
        print(f'Found name = {name}')

結果一致
title

現在,在定義方法的引數時可以使用特殊的標記「/」,以指定該函式僅接受標記左側的位置引數。此處的「/」標記表示x,y和z的值只能在位置上傳遞,而不能使用關鍵字引數。

Code:
def func1(x,y,z=None,/):
    r = x + y
    if z is not None:
        r -= z
    return r
print(func1(2, 5)) #7
print(func1(2, 5, 3)) #4
print(func1(x=2, y=10)) #TypeError
print(func1(2, 10, z=3)) #TypeError

現在,你可以在f-string中使用「=」運算子來獲取並列印值。
這意味著現在我們可以在f-string中執行算術運算了。

a = 1

b = 2

print(f'{a=}{b=}')
#a=1b=2
print(f'{a=},{b=}')
#a=1,b=2
# 但是python3.7 則直接報錯

Python為缺少逗號引入了新的警告訊息,在這個新版本中的錯誤訊息。直譯器會丟擲這個有用的警告資訊,這將有助於使用者快速找到自己的錯誤。

list1=[[0,1] [2,3]] #這將給出缺少逗號和TypeError的SyntaxWarning。

翻譯為:列表索引必須是整數或切片,而不是元組;可能您遺漏了逗號?

Python

SyntaxWarning

reversed()現在可用於字典。Python已經開始從3.7開始保留dictionary中插入鍵的順序,但現在在3.8中,您也可以反轉它。

dict1={'a':5,'b':6}
print(dict1)    #{'a': 5, 'b': 6}
print(list(reversed(dict1)))    ['b', 'a']

使用多處理,可以跨 Python 的所有例項全域性共享和訪問資料。這將大大加快資料的儲存、儲存、訪問和傳輸。

Python中的Pickle主要用於序列化和反序列化資料,以及可以在其他地方使用的程式碼。在這個新版本中,Python將預設使用Protocol 4,您也可以將Protocol 5與之一起使用。這將使api得到充分利用,從而提高效能。
對於在資料科學領域工作的人來說,這是一個令人興奮的訊息,因為即使在空間較低或有限的伺服器上,這也能很好地與Django和Flask一起工作。

Python還表示,他們已經改進了Python的C引擎。這將使Python中的優化變得容易。資料科學領域的人們已經遇到了很多Python或Jupyter環境由於大量資料而崩潰的例子。隨著CPython模組的改進,使用者可以期望在處理和查詢資料時獲得更好的結果。

此版本增加了一些效能,加快了直譯器的速度。其中一些是:

  • operator.itemgetter() 現在快了33%。
  • Field lookups in collections.namedtuple() 中的欄位查詢現在快了兩倍多。
  • 列表建構函式現在建立的列表平均小12%。
  • uuid.UUID 現在使用插槽來減少記憶體佔用。
  • 一些簡單的內建和方法的呼叫現在快了20-50%。

還有很多…
要了解更多,請檢查 https://www.python.org/downloads/release/p...


即將釋出的Python為該語言新增了一些很棒的新特性,並通過基本的加速修復顯著提高了效能。讓我們歡迎Python3.8並充分利用它。

相關文章