Python3.8 新特性 (一):賦值表達式

Python3.8 新特性 (一):賦值表達式

Python3.8 正式版本在前兩天已經發布,喜歡嚐鮮的同學可以下載下來體驗一下,我並沒有打算升級到最新版本,因為性能上並沒有顯著提升。但還是有必要了解其中的新特性。

賦值表達式的語法是:“ name := expression ”,這個曾經引起很大爭議特性,最終還是加入到了 Python3.8。不過它也僅僅只是一個錦上添花的特性。

我們可以通過一個例子來了解它的使用場景。

>>> import re
>>> data = "hello123world"
>>> match = re.search("(\\d+)", data) # 3
>>> if match: # 4
... num = match.group(1)
... else:
... num = None
>>> num
'123'

代碼很簡單,就是一個使用正則表達式提取字符串中數字部分的操作。之前的做法是先將調用 re.search 方法,返回 Match 對象,然後賦值給變量 match,再判斷 match 對象是否為 None 來提取其中的數字部分。

在 Python3.8 中,你可以將第 3、4 行代碼合併成一行代碼,** 在 if 語句中,可以給變量賦值,** 這就是賦值表達式。相比之前的版本,代碼少了一行。

>>> **if match:=re.search("(\\d+)", data):**
**... num = match.group(1)**
... else:
... num = None
...
>>> num
'123'

這樣看起來代碼確實精簡了一點點,但是,這樣的特性對開發者來說,只能說是一個不痛不癢的功能,至少對我來是這樣。


分享到:


相關文章: