1. 程式人生 > >Python寫程式碼的用法建議

Python寫程式碼的用法建議

1.Mutable and immutable types

Python有兩種內建或使用者定義的型別

可變型別是允許就地修改內容的型別。典型的可變列表是列表和詞典:所有列表都有變異方法,如 list.append()或list.pop(),並且可以在適當的位置進行修改。詞典也是如此。

不可變型別不提供改變其內容的方法。例如,設定為整數6的變數x沒有“增量”方法。如果要計算x + 1,則必須建立另一個整數併為其指定名稱。

體會一下這Best這招,選擇是使用map函式,它可以將內建函式型別str對映到迭代器range。這會生成一個map物件,然後就可以像其他示例一樣join。在某些情況下,map函式甚至可能比列表理解更快,更簡潔!


2.One statement per line

每一行一個語句,尤其在複雜的邏輯表示式的時候,這樣會清晰很容易閱讀

雖然列表推導等一些複合語句因其簡潔性和表達性而被允許和讚賞,但在同一行程式碼上有兩個脫節語句是不好的做法

 

3.Explicit code

Python因為技巧性非常高,有的時候濫用一些黑魔法,過度的使用技巧而反而失去了程式碼本身的直觀性。

 

字典的更新有幾種方法,dict(**locals)本意是想生成一個新的字典返回。在上面的好程式碼中,顯式地從呼叫者接收x和y,並返回顯式字典。使用此函式的開發人員通過讀取第一行和最後一行就能確切地知道要做什麼

,而不是像壞例子的那種情況,比較晦澀難懂,不直接。

 

 4.Returning values

關於返回值的處理

當函式的複雜性增加時,在函式體內使用多個return語句並不罕見。但是,為了保持清晰的意圖和可持續的可讀性水平,最好避免從體內的許多輸出點返回有意義的值。

在函式中返回值有兩種主要情況:函式在正常處理時返回的結果,以及指示錯誤輸入引數的錯誤情況或函式無法完成其計算的任何其他原因或任務

def complex_function(a, b, c):
   if not a:
       return None  # Raising an exception might be better
if not b: return None # Raising an exception might be better # Some complex code trying to compute x from a, b and c # Resist temptation to return x if succeeded if not x: # Some Plan-B computation of x return x # One single exit point for the returned value x will help # when maintaining the code.


當一個函式在其正常過程中有多個主要出口時,除錯返回的結果變得很困難,因此最好保留一個退出點。這也將有助於分解一些程式碼路徑,如果函式有多個出口點,說明你的程式碼要進一步的重構。

 
5.Unpacking

如果知道列表或元組的長度,則可以通過解壓縮為其元素指定名稱。比如enumerate()將為列表中的每個項提供兩個元素的元組,一個下標一個值