In the context of Boolean operations, and also when expressions are used by control flow statements, the following values are interpreted as false: False,None, numeric zero of all types, and empty strings and containers (including strings, tuples, lists, dictionaries, sets and frozensets). All other values are interpreted as true.
good thing too as it would have been a infinite loop otherwise.
Anyway same in mel its not thet it interprets it as == 1 ist just that 0 is considered false, and all other numeric values as true. Pretty common design in scripting languages in general IMHO.