用 is 來比對 None

最近看到別人 coding, 才發覺自己有養成許多好習慣卻沒自覺。有機會應該一則則寫在這裡, 那天想有系統地整理時, 才方便彙整。

這篇提到 Python None 的特性。結論是判斷 object a 是否為 None 時, 記得用 「a is None」, 不然會有下列潛在問題:

  • a == None: 覆寫 a.__eq__ 可以得到不同結果。
  • not a: 無法區分 False、0、[] (或任何 __len__ 傳回 0 的物件) 以及 None。
另外注意函式預設傳回 None。

有個類似的守則, 比對 singleton 時記得用 is 別用 ==, 原因應該一樣, 避免覆寫 __eq__ 的問題。

留言

這個網誌中的熱門文章

(C/C++ ) 如何在 Linux 上使用自行編譯的第三方函式庫

熟悉系統工具好處多多

virtualbox 使用 USB 裝置