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年3月5日

瀏覽量:119

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.