Request for feedback on my first Python program
Jack Diederich
jack at performancedrivers.com
Sun Jun 1 12:33:17 EDT 2003
On Sun, Jun 01, 2003 at 12:02:56PM -0400, Aahz wrote:
> In article <mailman.1054429562.11692.python-list at python.org>,
> Sean Legassick <sean at datamage.net> wrote:
> >In message <slrnbdeevn.694.andrew-usenet at athena.jcn.srcf.net>, Andrew
> >Walkingshaw <andrew-usenet at lexical.org.uk> writes
> >>
> >>def isMeaningful(line):
> >> if line != "" and line[0] != "#":
> >> return True
> >> else:
> >> return False
> >
> >Yuck!
> >
> >def isMeaningful(line):
> > return line != "" and line[0] != "#";
> >
> >No offence intended, but I've seen this too often in real code not to
> >point out its redundancy here.
>
> It is *NOT* redundant; it is making clear that True/False are the only
> possible return values. With your rewrite, reading and understanding
> the code is necessary to clarify the intent.
+1 for good advice
If the docstring says "returns true if some_condition, false otherwise"
invariably someone will look at the code and use the side effect that it
isn't returning 1/0 for evil purposes[1]. reversing the order of compairson
shouldn't break any code, so it is good defensive programming to always
explicity return a bool.
The snippet in question will always return a bool, but IMO this is rarely
the case so it is best to be explicit.
-jack
[1] shoot the person who depended on the undocumented side effect
More information about the Python-list
mailing list