Yes and is a logical and whereas & is a bitwise and. See example -
>>> 1 and 2
2
>>> 1 & 2
0
The first result is due to short circuiting. Python tests 1 and finds it true and returns the 2. But, the second part does 01 (Binary 1) & 10 (Binary 2) hence evaluating to 00 (1 & 0, 0 &1) , which is 0.