@tokyo_0 @cazabon "and" and "or" will short-circuit if the first part is enough to know the result.
>>> def spy(value):
... print("called with", value)
... return value
...
>>> spy(True) or spy(False)
called with True
True
>>> spy(True) and spy(False)
called with True
called with False
False
>>> spy(False) and spy(True)
called with False
False
so "in" will only be called if the value before the and is "truthy", which means that bool(value) returns True.