That's correct, "if not" matches False or None. It also matches a variety of other "not" type things, such as [], {}, (), as well as any classes or types that have their own equivalence that emulates a boolean with __eq__ and __ne__. So yes, it's definitely more implicit and less explicit, but I was moreso referring to the fact we're using "if thing:" throughout the code, including the immediately preceding if statement on line 236, instead of "if thing is True:". The same ambiguity applies with the truthy conditional, where a ton of scenarios will return True besides thing = True.

My point was about consistency -- if you're going to replace implicit boolean conditionals with explicit, do it for both sides :)