修改清單方法(如追加、排序、擴充、刪除、清除和反轉)通常會傳回 None 而不是比修改後的清單本身。這項設計決策植根於 Python 的總體原則,即就地修改物件的函數應傳回 None。
根據 Python 架構師 Guido van Rossum 的說法,此選擇旨在強調沒有創建新物件。透過不返回修改後的列表,它會阻止使用鍊式副作用,例如:
x.compress().chop(y).sort(z)
,這可能會造成混亂並妨礙可讀性。相反,Python 更喜歡更明確的形式:
x.compress() x.chop(y) x.sort(z)
這種分離清楚地表明每個方法都作用於同一個物件。
同時連結側-effect 呼叫不鼓勵,Python 允許它用於傳回新值的操作,例如字串處理操作:
y = x.rstrip("\n").split(":").lower()
此設計決策有缺點。它阻止了列表處理的直觀“連結”,例如:
mylist.reverse().append('a string')[:someLimit]
列表理解和其他資料結構等替代方案可以提供類似的功能,而不會破壞“無副作用返回”約定。
以上是為什麼Python的列表修改方法回傳「None」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!