Implicit conversion to boolean in if and while statements
rantingrickjohnson at gmail.com
Mon Jul 16 03:21:06 CEST 2012
On Jul 15, 4:53 pm, Chris Angelico <ros... at gmail.com> wrote:
> Then the construct "if bool(some_condition):" is redundant.
Wrong again, pay attention Chris!
It's ONLY redundant IF "some_condition" is a rich comparison: like
"(a==b)" OR a boolean function: like "callable(a)".
If HOWEVER we want to "truth test" an object (as in: "if obj") we
should be FORCED to use the bool! Why? Because explicit is better than
implicit and readability counts if we want to create maintainable code
if bool(obj) and a==b: # Correct!
if obj and a==b: # Incorrect!
Both lines of code currently produce the same result because
"somebody" decided to give objects esoteric boolean values. Sure, we
saved a few key stokes in a condition, but sadly at the cost of
readability and consistency. I see no reason why choosing implicit
resolution is better than explicit resolution. Saving six keystrokes
is simply not enough!
Python's motto has always been "readability counts", and for that
reason, we should return to Explicit Boolean Resolution if we want to
adhere to those principals.
More information about the Python-list