I cannot evaluate this statement...

waltbrad waltbrad at hotmail.com
Fri Mar 7 21:38:11 CET 2008

The script comes from Mark Lutz's Programming Python.  It is the
second line of a script that will launch a python program on any

import os, sys
pyfile = (sys.platform[:3] == 'win' and 'python.exe') or 'python'

Okay, run on a win32 machine, pyfile evaluates to python.exe

That makes sense. Because the first condition is true and 'python.exe'
is true. So the next comparison is 'python.exe' or 'python'  Well,
python.exe is true. So that value is returned to pyfile.

Now. Run this on linux. The first condition evaluates sys.platform[:3]
== 'win' as false. So, the next comparison should be  'False' or
'python'   -- This is because 'and' returns the first false value.
But, again, on linux pyfile evaluates to python.exe

Where am I going wrong.  And when will this statment make pyfile
evaluate to 'python' ?

More information about the Python-list mailing list