I think it’s because not()
is equivalent to not(None)
, and since None
is falsy not(None)
returns True
.
Are you sure?
I can’t test it now, but to me it looks like ()
is an empty tuple. Python behavior is that for logic operations empty set equals to false. Then we apply not
to get True
. Not having space between not
operator and parentheses makes it look like it is a function.
Why is literally nothing equivalent to None? Is it because None is the default value of an optional parameter? (If so why oh why is it optional)
Because nothing isn’t something, and something is true. It’s base Boolean logic where everything is either true or false. Null/nothing is false.
It’s a weird way to think about conditionals, but it makes sense when you use them in real examples. In my case, I use them like this when I need to make sure that a variable has a value. So I can do something like
If(variable){do things with the variable}else{do stuff when the variable doesn’t exist}
I understand that, it makes sense. But why does it not throw an error? The parameter is missing after all.