https://docs.python.org/3/library/constants.html
https://docs.python.org/3/library/functions.html#bool
Any object can be tested for truth value.
Objects considered false:
Everything else is considered true.
'True' and 'False' are instances of the 'bool' class which is inherited from 'int'. In numeric contexts (for example when used as the argument to an arithmetic operator), 'False' and 'True' behave like the integers 0 and 1, respectively.
'A or B', 'A and B', 'not A' (ascending priority).
'A or not B and C' is interpreted as 'A or ((not B) and C)'.
'not A == B' is interpreted as 'not (A == B)' ('==' is a non-Boolean operator!).
Use parentheses () in case of doubt.
'and' and 'or' are short-circuit operators:
'A == B', 'A != B', 'A < B', 'A <= B', 'A > B', 'A >= B'.
Identity tests: 'A is B' [id(A) == id(B)], 'A is not B'.
'x in S' and 'x not in S' operations are supported by types that are iterable or implement the '__contains__()' method.