4 ms·
> As for why, 0 is false, nonzero is true It’s not that clear cut. If you assign d[True] and then d[1] you overwrite because True hashes to 1, not because 1 is
by hjk05 7y ago
> As for why, 0 is false, nonzero is true
It’s not that clear cut. If you assign d[True] and then d[1] you overwrite because True hashes to 1, not because 1 is a truthy value. If you try writing to d[2] you don’t overwrite d[True].
In any case this Feels like an odd case where python is sort of doing something similar to implicit type conversion which goes against the zen of python.
- tempguy9999 7y agoThis is an excellent point, and one I met a while ago when designing a rather specialised DSL. I went the same way as python, so one didn't have to keep casting to bools to do a check and it made things a lot cleaner mostly, but it did introduce some dubious corner case niggles. I don't know if there is a good answer. I didn't find one anyway.