Python 程式設計中程式設計師常犯的錯誤有哪些?
以下是程式設計師常犯的一些最常見的 Python 程式設計錯誤/陷阱:
作用域名稱查詢 - Python 按照 LEGB(區域性、巢狀、全域性、內建) 的順序遵循作用域規則。由於 Python 沒有嚴格的型別繫結,程式設計師可以將外部作用域變數重新關聯到另一個值,該值以後可能在外部作用域中使用,但現在已被替換為其他值。
不區分 is 和 == - Python 中的 is 運算子檢查兩個物件是否引用同一個記憶體地址。== 運算子執行 __eq__ 函式,該函式可能針對不同類以不同的方式檢查相等性。
在迭代時修改列表 - 如果在迭代時從列表中刪除元素,則會得到 IndexError。這是因為列表在縮小,而索引沒有隨之縮小。
閉包繫結:請考慮以下程式碼:
示例
listLambdas = [lambda x : i + x for i in range(5)] for lam in listLambdas: print(lam(10))
輸出
這將給出以下輸出
14 14 14 14 14
震驚了嗎?這是由於繫結閉包造成的。此列表中的所有 lambda 都引用變數 i,即當它發生變化時,這些 lambda 開始引用新值。
與內建函式名稱衝突 - 您一定在某個時候建立了一個名為 sum 的變數。請注意,在這種情況下,您重新分配了對 sum 函式的引用。對於像這樣的事情,這看起來微不足道,但當包以這種方式命名時,可能會導致一些嚴重的問題。這可能導致其他包匯入您的類而不是標準類。
運算子的非直觀實現 - Python 提供了一種為類過載運算子函式的方法。通常,人們傾向於以一種不常見的方式實現這些運算子,並最終建立複雜且非直觀的 API。
廣告