Python的列表修改方法,例如append、sort和extend,具有返回None而不是返回None的特殊行為修改後的列表本身。這個設計決策激發了程式設計師的好奇心。
例如,在 Java 中,list.sort() 傳回排序後的列表,讓開發人員方便地連結方法呼叫。但在 Python 中,這種連結是不可能的,這就提出了一個問題:為什麼 Python 的設計者會做出這樣的選擇?
設計原則:強調就地修改
Python 中的一項基本設計原則是就地改變物件的函數應該傳回 None。這巧妙地傳達了沒有傳回新物件。
Guido van Rossum 的觀點
Python 的創建者 Guido van Rossum 在 Python 上解釋了這一決定背後的基本原理-開發郵件列表。他建議返回 None 可以阻止多個副作用調用的連結所造成的「可讀性威脅」。
在下面的範例中,連結形式:
x.compress().chop(y).sort(z)
需要深入的知識鏈中的每個方法。第二種形式:
x.compress() x.chop(y) x.sort(z)
更明確,明確每個方法作用於同一個物件。這有助於保持程式碼的清晰度,特別是在使用不熟悉的類別或方法時。
規則的例外
雖然一般原則是就地修改回傳None,有例外:
但是,正如 van Rossum 指出的那樣,將連結限制為傳回新值的此類操作以避免混淆非常重要且可讀性問題。
以上是為什麼Python的列表修改方法回傳「None」而不是修改後的列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!