From documents to and :
The expression x and y first evaluates x; if x is false, its value is returned equally; otherwise, y is calculated, and the resulting value is equal returned.
In your case, since 0 , '' and [] all evaluated as False , the first value in each of your expressions is returned.
source share