How is the logical processing being done for strings like 'Dog' and 'Cat'

Tim Roberts timr at
Tue Oct 21 06:02:43 CEST 2008

Sumitava Mukherjee <smukh at> wrote:

>Hi all,
>I am a novice programmer in Python.
>Please could you explain me the results (regarding logical operators).
>I get this:
>>>> print bool('God' and 'Devil')
>[This is ok because (any) string is True, so; (True and True) gives

Your statement is accurate, but that's not why it returns true.

>>>> print('God' and 'Devil')

Right.  And bool('Devil') is True, because a non-empty string is a true

>[This is what I don't get ]
>and for that matter,I also checked out this:
>>>> 01 and 10
>What is python doing when we type in ('God' and 'Devil') or key in (01
>and 10) ?

"and" and "or" are a bit more than logical operators.  The exact definition
of "x and y" is "if x has a false value, return x, otherwise return y".  If
both sides are booleans, this does exactly what you expect.

Similarly, "x or y" is actually done as "if x has a true value, return x,
otherwise return y".

This allows for one of the cuter Python hacks:
    xxx = x and y or z
which is essentially the same as the C ternary operator:
    xxx = x ? y : z;
Tim Roberts, timr at
Providenza & Boekelheide, Inc.

More information about the Python-list mailing list