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()將為列表中的每個項提供兩個元素的元組,一個下標一個值
Python寫代碼的用法建議