From: Algis K. <aka...@pc...> - 2009-01-31 02:37:38
|
Hi, On Monday 26 January 2009 21:32:13 Benny Malengier wrote: > 2009/1/26 Reinhard Müller <rei...@by...> > > > Am Montag, den 26.01.2009, 11:02 +0100 schrieb Benny Malengier: > > > If I see: > > > if spouse: > > > .... > > > I would expect to see instead: if spouse is not None > > > > It seems to be quite usual to test the truth value of variables of other > > type than bool, like > > > > if child_list: > > > > which would be the equivalent to > > > > if child_list is not None and len(child_list) > 0: > > > > or > > > > if child_list is not None and child_list != []: > > > > Actually I find the short version (if child_list:) quite comfortable - > > and readable - especially when child_list can either be None or a list, > > and we want code to only execute if it is a non-empty list. > > Of course, but you are now using lists, not boolean values, where this list > started with! > For lists, > > if child_list: > > it is clear you have a list, and work with it's bool value. So [] has bool > value False, all the rest True, so this is the correct way. > When I see this code, I never expect to have None as value of child_list > (it is a list after all) so it would be stupid to compare it with None. > Again, it comes down to me to having a good variable name in the first > place so you don't start to doubt the code. > > However, do take into accound the relevant part of PEP 8: > > - Comparisons to singletons like None should always be done with > 'is' or 'is not', never the equality operators. > > Also, beware of writing "if x" when you really mean "if x is not > None" -- e.g. when testing whether a variable or argument that defaults to > None was set to some other value. The other value might have a type (such > as a container) that could be false in a boolean context! > > > Benny I have been intrigued by this long and exhaustive discussion. I hope it has not drifted into the "this is right, hence I am right" motivation. Quote from pep-0008: But most importantly: know when to be inconsistent -- sometimes the style guide just doesn't apply. When in doubt, use your best judgment. Look at other examples and decide what looks best. And don't hesitate to ask! End of quote In my own code I use a "camel case" (myMethod) in preference to _ (my_method). Unlike Benny, who claims not to read pep 8, pep 8 bothers me AFA camelCase is concerned. I took some solace finding that gramps often uses (use?) camelCase and also in the quote above. My 2c worth. OldAl. |