在 google python style guide 的 True/False evaluations。有提到 Never use == or != to compare singletons like None. Use is or is not.。這句話說對了一半。事實上, True 和 False 這兩個物件也是 singletons。可是如果你這樣寫 if test() is True,你大概會被說你不會寫 python。你可以用 id(True) 來判斷 True 是否都是同一個物件,你會發現它都是在同一個位址上。
事實上,我個人不是很喜歡 Use the "implicit" false if at all possible. 這個規則就是了。我比較喜歡明確的寫法。例如, if len(a) > 0,這句話明確的告訴 a 必須實作 __len__ 方法,且這個方法的回傳值要大於零時,結果才會是 True。 if a 實際上的意涵等同 if bool(a) ,他的意思是 a 有實作 __nozero__ ,且這個方法的回傳值是 True。後者透露出來的資訊較前者少。當然,如果故意要隱藏實作細節的話,後者比前者優就是了。
沒有留言:
張貼留言