Python代碼中的三大常見“愚形”,你中招了嗎?

愚形,是圍棋的專業術語,凡是效率低下且不美觀的棋形,統稱為愚形。比如空三角和糰子,就是典型的愚形。低水平棋手經常會在無意中走出愚形,而那些高手平棋手,儘管在生死存亡的危機時刻也會用愚形求生或者逃命,但在正常局面下他們是不會走出愚形的。在Python代碼中,初學者也會寫出一些類似圍棋愚形的寫法,不僅臃腫繁瑣,而且效率低下。本文總結了Python代碼中的三大常見“愚形”,快來看看,你中招了嗎?

1. 不會使用一顆星(*)解包

列表 grade 是語文、數學、英語等三門課程的成績,要把成績格式化為“語文90,數學95,英語93”樣式的字符串,不管是習慣用C語言風格的格式化輸出,還是習慣用format函數,大概很多人都會這樣寫吧:


Python代碼中的三大常見“愚形”,你中招了嗎?

事實上,上面的兩種寫法都是典型的“愚形”。正確的寫法應該是用一顆星(*)解包列表:


Python代碼中的三大常見“愚形”,你中招了嗎?

如果再加上一個變量,也是同樣的寫法:

Python代碼中的三大常見“愚形”,你中招了嗎?

2. 不會使用enumerate()函數

遍歷列表是Python代碼中最常見的結構:

Python代碼中的三大常見“愚形”,你中招了嗎?

如果遍歷列表時,循環體內同時用到了元素及其索引,下面的寫法似乎是自然而然的:

Python代碼中的三大常見“愚形”,你中招了嗎?

然而,這也是“愚形”。漂亮的寫法是使用枚舉函數:

Python代碼中的三大常見“愚形”,你中招了嗎?

使用枚舉函數enumerate(),返回的是一個迭代器,類似於range()函數,因此你無需擔心效率問題。

3. 忽略了字典的get()方法

字典的使用,似乎從來就不存在問題。但是,當我們試圖訪問一個不存在的鍵時,就會發生意外:

Python代碼中的三大常見“愚形”,你中招了嗎?

為了避免程序拋出異常,很多人會小心翼翼地把代碼寫成這樣:

Python代碼中的三大常見“愚形”,你中招了嗎?

或者使用三元表達式:


Python代碼中的三大常見“愚形”,你中招了嗎?

遺憾的是,上面兩種寫法都是“愚形”,因為字典對象本身自帶一個更簡潔優雅的get()方法:

Python代碼中的三大常見“愚形”,你中招了嗎?

get()的第2個參數,表示鍵不存在時函數返回的值。如果省略該參數,鍵不存在時函數返回None(無返回)。python的知識點你get到了嗎。

小小程序員


分享到:


相關文章: