Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

boolean 'and' in Python

Tags:

python

boolean

Can somebody explain the reasoning behind the following tests ??

>>> 1 and True
True
>>> {'foo': 'Foo'} and True
True
>>> {} and True
{}
>>>
like image 583
simplyharsh Avatar asked Dec 12 '22 18:12

simplyharsh


2 Answers

Python doesn't have a boolean and or boolean or. Its and and or operators are coalescing, which means that they return the first non-true or true operand, or the second operand.

like image 156
Ignacio Vazquez-Abrams Avatar answered Jan 03 '23 13:01

Ignacio Vazquez-Abrams


In the context of Boolean operations, and also when expressions are used by control flow statements, the following values are interpreted as false: False, None, numeric zero of all types, and empty strings and containers (including strings, tuples, lists, dictionaries, sets and frozensets). All other values are interpreted as true.

The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.

The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.

For further reference read more on Boolean operations: http://docs.python.org/reference/expressions.html#boolean-operations

like image 37
meson10 Avatar answered Jan 03 '23 15:01

meson10