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。

更新於: 2020-03-05

99 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.