What’s New in Python 3.8

Python 在2019年10月14日 釋出了3.8的版本,酷爸看了看新的特色,跟大家分享一下心得。

海象表達式 :=(Assignment expressions)

海象表達式(像形)用來在一大串的表達式中給予變數值。
這玩意說實在還真的蠻有趣的。蠻常碰到的例子是要print的東西與長度有關。讓我們看看以下官方的例子:

if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

以前必需要在判斷式前先多寫一行 n = len(a),才能對n進行比較。現在就能夠在判斷式執行的同時給定變數值。但要小心因為簡便卻給別人帶來不便(對於看不懂的人來說)

位置參數 / 與 * (Positional-only parameters)

在定義函數時,多個這個位置參數的使用。一樣是官方的例子:

def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

a與b就會被限制為僅使用位置的參數,c與d則可以是位置參數或關鍵字參數,e跟f則限定為關鍵字參數。以下是此函式的官方的範例使用方法:

f(10, 20, 30, d=40, e=50, f=60)

使用的例子包含
.模擬C語言的函式行為(沒有關鍵字參數)
‧增加可讀性(有些函式加了關鍵字參數反而影響可讀性)
‧降低更改關鍵字參數名稱的影響(禁用關鍵字參數)
‧重複使用關鍵字參數(關鍵字參數的靈活運用)

f-string加入=的使用

之前酷爸其實還是最常以.format的方式來進行字串的變數輸出(這些年來多打了好多字啊…),有了f-string之後,會少了很多以下常見的同名變數輸出方式…

a=5
b=6
print('{a} and {b}'.format(a=a, b=b)) #別再用啦~
#有了f-string之後
prin(f'{a} and {b}) #短少精實~
#在3.8版加入=之後
print(f'{a=} and {b=}') #增加print的可讀性、方便debug
#不然以前要這樣寫
print(f'a={a} and b={b}') #長一點點,有點同名變數輸出的感覺

pickle protocol 5

不知道有什麼好處,但新的應該比較好吧…(汗。

詳細的解釋部份當然還是要參閱官網囉~ 謝謝收看
https://docs.python.org/3/whatsnew/3.8.html

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *