On Thursday 06 March 2014 15:21:36 Barry Warsaw wrote:
On Mar 07, 2014, at 02:40 AM, Stephen J. Turnbull wrote:
I also value the psychological benefit of being precise here. I'm not even sure it's possible to fool 'is' into thinking some other object is None, but people do a great job of convincing themselves of things like "datetime.time objects can't be false" all the time. Use the "is None" idiom and you know exactly what you're doing. This latter is close to "just style", of course.
Not just "you" (i.e. the author of the code), but everyone who comes after you and reads it. Being more explicit with identity tests against None assists future minions in understanding the intent of the code. When using the Socratic Method Of Code Reviews, I always ask about whether the author really expects the 'var' in "if var:" to be any truth-y value. The answer is usually "no", in which case I encourage tightening up the conditional.
Wait -- you just argued for replacing if time_obj: not by if time_obj is not None: -- which is a more relaxed conditional -- but rather by if isinstance(time_obj, datetime.time): That seems quite un-pythonic, and *that* - from you - is quite unlikely, so I probably misunderstood. Do you mind clarifying? [A guess: The argument you intended to make was about an "if not var:" test changed to "if var is None:". It does not survive inversion of sense well.] Thanks, Shai.