question of style
Lie Ryan
lie.1296 at gmail.com
Fri Jul 3 02:09:31 EDT 2009
Simon Forman wrote:
> On Jul 2, 3:57 pm, Scott David Daniels <Scott.Dani... at Acm.Org> wrote:
>> Duncan Booth wrote:
>>> Simon Forman <sajmik... at gmail.com> wrote:
>>>> ...
>>>> if self.higher is self.lower is None: return
>>>> ...
>>> As a matter of style however I wouldn't use the shorthand to run two 'is'
>>> comparisons together, I'd write that out in full if it was actually needed
>>> here.
>> Speaking only to the style issue, when I've wanted to do something like
>> that, I find:
>>
>> if self.higher is None is self.lower:
>> ...
>>
>> more readable, by making clear they are both being compared to a
>> constant, rather than compared to each other.
>
> I was going to do it that way for aesthetics if nothing else, but in
> this particular code "self.higher is self.lower" could only have been
> True if they were both None, so the final "is None" was redundant and
> I only included it as a "just-in-case" check in case someone someday
> used the code in such a way as to assign the same object (not None) to
> both self.higher and self.lower... Totally pointless, I'm sorry to
> say. I'm glad the whole line was redundant really.
>
I say, you should keep the `is None` for readability and to safe guard
against immutable optimization and/or Singleton objects. Due to an
implementation detail, python does not guarantee that two immutable
object will return different objects; you have:
>>> a = 1
>>> b = 1
>>> a is b
True
More information about the Python-list
mailing list