Python 3.8是Python程式語言的最新主要版本, 它包含許多新功能和優化。
Python 3.8
Python 3.8的一些新功能包括:
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}')
結果一致
現在,在定義方法的引數時可以使用特殊的標記「/」,以指定該函式僅接受標記左側的位置引數。此處的「/」標記表示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。
翻譯為:列表索引必須是整數或切片,而不是元組;可能您遺漏了逗號?
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並充分利用它。