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