[Python-ideas] Programming recommendations (PEP 8) and boolean values
rurpy at yahoo.com
rurpy at yahoo.com
Thu Aug 9 16:58:41 CEST 2012
On 08/08/2012 09:23 PM, Ben Finney wrote:> Rob Cliffe
<rob.cliffe at btinternet.com> writes:
>[...]
>> 2) Say you are writing a function to process an arbitrary object,
e.g.
>> a custom version of repr. You might well choose to write
>> if obj is True:
>> # processing
>> elif obj is False:
>> # processing
>> elif type(obj) is int:
>> # processing
>
> Again, this is much clearer written as:
>
> if type(obj) is bool:
> # processing
> if type(obj) is int:
> # processing
>
> So not a compelling use case for checking specific values.
Your replacement is not equivalent. I think
what you meant was,
if type(obj) is bool:
if obj:
# processing
else:
# processing
elif type(obj) is int:
# processing
I don't find that clearer at all, let alone
"much clearer" than,
if obj is True:
# processing
elif obj is False:
# processing
elif type(obj) is int:
# processing
(On the other hand I wouldn't claim the latter is
"much clearer" than the former either, but your
claim is wrong IMO.)
>[...]
> On the other hand, ‘if foo is True’ is a common beginner mistake that we
> meet frequently in ‘comp.lang.python’, and is almost always better
> written as ‘if foo’. It's that kind of advice that belongs in PEP 8.
Perhaps correcting beginner's mistakes should be
done in the tutorial while PEP-8 should be aimed
at a broader and on average more advanced audience.
I realize that one purpose of style conventions are
to avoid mistakes, including beginner one's but I
and several times found the simplest, most intuitive
way to implement tri-value logic was to use {True,
False, None} and so think that if "is True" is to be
officially discouraged because misuse by some people
in the first .5% of their Python careers, the reason
for that discouragement should at least be explained
in PEP-8.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20120809/2ea26a62/attachment.html>
More information about the Python-ideas
mailing list