Hacker News new | ask | show | jobs
by hjk05 2549 days 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.

1 comments

This 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.