I have the following python code:
value = 1.9
if value:
#do something
else:
#do something else
What happens here? I can\'t underst
Python has a concept of truthy-ness where non-Boolean values are basically "coerced" into Boolean ones, as shown here:
4.1 Truth value testing
Any object can be tested for truth value, for use in an
if
orwhile
condition or as operand of the Boolean operations below. The following values are considered false:
None
False
- zero of any numeric type, for example,
0
,0.0
,0j
.- any empty sequence, for example,
''
,()
,[]
.- any empty mapping, for example,
{}
.- instances of user-defined classes, if the class defines a
__bool__()
or__len__()
method, when that method returns the integer zero or bool valueFalse
.All other values are considered true - so objects of many types are always true.
Operations and built-in functions that have a Boolean result always return
0
orFalse
for false and1
orTrue
for true, unless otherwise stated. (Important exception: the Boolean operationsor
andand
always return one of their operands.)
Bottom line is that 1.9
comes under the "All other values are considered true" clause since it matches none of the values that would be considered false. The closest it comes is the third one (numeric type) but, since it's non-zero, it doesn't quite get there.