2012-12-10 [長年日記]
■括弧を忘れてmethodが返ってくる罠
やってることは嘘だけど、ざっと省略してこんなソースを書いてた。
n1=foo() #datetime型 n2=bar #datetime型 td=n1-n2 #timedelta型 if td.total_seconds>0: print "n1が%s秒早いです"% td.total_seconds() else: print "n2が%s秒早いです"% -td.total_seconds()
これ、elseが実行されなかった。
n2のほうが小さい状況はまずありえないけど「一応書いておいた」ケース。
なのでそこを通すテストをわざわざやってみるまで間違いに気づかなかった。
if の部分、td.total_secondsの括弧を忘れていて、method型が返ってきてた。(Python2系では)0と比較することが許されて、(多分)必ず真。
テストして気がついてよかった。