None in Python

None is not null, it is closer to undefined in JS. If you define a variable as None, the variable exists, it is just not yet defined.

Using None is a pattern similar to using let in JS to name a variable and definine it later on.

temperature = None

If we logged temperature it would give us None rather than a null pointer error.

With None we can use is None and is not None, special predicates for working with None only. This is a akin to using if (x !== undefined) in TypeScript

winner = None
print('winner:', winner)
# winner: None
print('winner is None:', winner is None)
# winner is None: True
print('winner is not None:', winner is not None)
# winner is not None: False
print(type(winner))
# <class 'NoneType'>
# Now set winner to be True
print('Set winner to True')
# Set winner to True
winner = True
print('winner:', winner)
# winner: True
print('winner is None:', winner is None)
# winner is None: False
print('winner is not None:', winner is not None)
# winner is not None: True
print(type(winner))
# <class 'bool'>