On Sun, 02 May 2010 10:14:44 -0700, Paul McGuire wrote: > While sifting through some code looking for old "x and y or z" code that > might better be coded using "y if x else z", I came across this puzzler: > > x = <boolean expression> and True or False > > What is "and True or False" adding to this picture? The boolean > expression part is already evaluating to a boolean, so I don't > understand why a code author would feel compelled to beat this one over > the head with the additional "and True or False".
If <boolean expression> is already an actual bool, then I can only imagine that the author is simply struggling with the concept, in the same way that some people write: if <boolean expression> == True: ... If it is any arbitrary object, then "x and True or False" is just an obfuscated way of writing "bool(x)". Perhaps their code predates the introduction of bools, and they have defined global constants True and False but not bool. Then they removed the True and False bindings as no longer necessary, but neglected to replace the obfuscated conversion. -- Steven -- http://mail.python.org/mailman/listinfo/python-list