當使用諸如追加、排序、擴展、刪除、清除和反轉等方法操作Python 列表時,會遇到一種奇怪的行為:這些操作就地修改列表並傳回None 而不是更新後的列表。
這個設計選擇是由 Python 中的一個基本原則驅動的:函數就地改變物件應該回傳 None。這強調了這樣一個事實:在此類操作期間不會建立新物件。
Python 的創建者 Guido van Rossum 在 Python-Dev 郵件列表上詳細解釋了他的基本原理。他反對以簡潔的方式將副作用連結到單一物件上,因為它可能會模糊讀者對程式碼意圖的理解。例如,考慮以下程式碼:
x.compress().chop(y).sort(z)
這相當於:
x.compress() x.chop(y) x.sort(z)
Van Rossum 認為第二種形式更清晰,因為它明確地表明每個操作都被應用到同一個變數x.
另一方面,連結的使用保留用於傳回新值的操作,例如字串處理操作:
y = x.rstrip("\n").split(":").lower()
儘管某些函式庫模組(如pstat)可能會鼓勵副作用調用的鏈接,但Van Rossum 斷言,對於標準庫的新添加,不鼓勵這種做法。
以上是為什麼 Python 列表突變方法回傳「None」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!