01.30 Python3.8來啦!這6個新功能快來收好

全文共2372字,預計學習時長

7分鐘

Python3.8來啦!這6個新功能快來收好


IT業日新月異,落後的Python 2將在2020年逐漸被淘汰。


2019年,隨著數據科學的興起,Python成為了最熱門的程序語言。


儘管如此,面對浩如煙海的知識,應接不暇也是正常的。語法不斷變化,每次Python更新,都會添加許多新的表達。有很多功能小芯只恨自己知道得太晚了。


如果讀者也感同身受,這裡有一個壞消息:近期,Python 3.8已經發布。


不過別擔心,小芯已經為你總結好了Python 3.8中每個新手都應該掌握的6大新功能。


Python3.8來啦!這6個新功能快來收好


1. 新模塊:讀取元數據歷

使用新的importlib.metadata模塊可以讀取第三方包的元數據。可以在腳本包中獲取版本號。


2. 字典反轉:排序


現在,字典可以用resersed( )在反轉插入排序中實現迭代了。


3. Continue – finally


由於Python的實現問題,以前在Finally子句中添加continue語句是不合法的。現在這一問題已不復存在。


  1. for i inrange(2):
  2. try:
  3. print(i)
  4. finally:
  5. print('A sentence.')
  6. continue
  7. print('This never shows.')
  8. # Python <= 3.7
  9. >>SyntaxError: 'continue'not supported inside 'finally' clause
  10. # Python 3.8
  11. >>0
  12. A sentence.
  13. 1
  14. A sentence.


Python3.8來啦!這6個新功能快來收好


4. 指示參數類型:讓代碼更強大


Python函數只接受兩種參數。


· 位置參數:根據函數定義的參數位置來傳遞參數。

· 關鍵字參數:使用關鍵字來指定參數。


在下例中,參數a和參數b的值可由位置參數或關鍵字參數確定,非常靈活。


  1. def my_func(a, b=1):
  2. return a+bmy_func(5,2) # both positional arguments
  3. my_func(a=5,b=2) # both keyword arguments


新版本的Python用語法/和*作區分,提供了指定接受位置參數或關鍵字參數的方法。注意:語法*並不是在Python 3.8中才出現。


在下面的例子中,開頭的兩個參數a和b只接受位置參數,中間的c和d可接受位置參數或關鍵字參數,最後的e和f只接受關鍵字參數。

  1. defmy_func(a, b, /, c, d, *, e, f):
  2. return a+b+c+d+e+f
  3. my_func(1,2,3,4,5,6) # invalid as e and f are keyword-only
  4. my_func(a=1,b=2,3,4,e=5,f=6) # invalid as a and b are position-only
  5. my_func(1,2,c=3,4,e=5,f=6) # returns 21
  6. my_unc(1,2,c=3,d=4,e=5,f=6) # returns 21

為什麼要犧牲靈活性呢?如果參數名稱隨意且無用,就應該排除關鍵字參數。如果預計函數中的參數名可能會發生變化,指定參數類型能避免代碼崩潰,也能讓代碼更加強大。


5. 賦值表達式:提升代碼可讀性


賦值表達式,又稱海象運算符,是以:=為語法形式的新運算符,它能把較大表達式中的某部分賦值給變量。這無疑是Python 3.8中討論最多的新功能了。來看個例子:


賦值表達式b := a**2 將a的平方,也就是36,賦值給b,然後檢查b的值是否大於0。


  1. a =6
  2. # The following statement
  3. # assigns the value a ** 2 to variable b,
  4. # and then check if b > 0 is true
  5. if (b := a **2) >0:
  6. print(f'The square of {a} is {b}.') # The square of 6 is 36.

有時賦值表達式能讓代碼更加簡潔可讀。但是,請注意不要濫用賦值表達式,因為在某些情況下它會讓代碼更加難懂。

  1. # DON'T DO THIS!
  2. a = 5
  3. d = [b := a+1, a := b-1, a := a*2]

其他(老)程序語言中也有賦值表達式,希望改用Python的程序員們能(多)用這一新功能。在賦值表達式氾濫之前趕快掌握它吧。


Python3.8來啦!這6個新功能快來收好


6. F字符串2.0: 調試(debug)的利器


Python f字符串改變了遊戲規則。F字符串是格式化字符串的語法,簡潔且易讀。利用語法f'{expr}',在引號前加上f,將表達式用大括號括住,就能夠將表達式插入字符串。


Python更新之後,等於號“=”能夠在f字符串f'{expr=}'語法中作為格式限定符使用。輸出的字符串為變量名=變量值,如下所示:


  1. pi =3# I studied Engineering
  2. print(f'π equals {pi}.') # π equals 3.
  3. print(f'{pi=}') # pi=3
  4. # take it or leave it

出於編制文件或調試 (Debug) 的需要,常需要指明變量值。F字符串使得調試(debug)易如反掌。

當然,在投身Python 3.8編程之前,你需要掌握Python基本功能(必不可少)。

Python3.8來啦!這6個新功能快來收好


這就是Python的6大新功能,每個Python新手都能從中獲益。


Python3.8來啦!這6個新功能快來收好

我們一起分享AI學習與發展的乾貨


分享到:


相關文章: