2010年2月9日 星期二

用 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__ 的問題。

沒有留言:

張貼留言

在 Fedora 下裝 id-utils

Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...