In article <mailman.4504.1387740695.18130.python-l...@python.org>, Mark Lawrence <breamore...@yahoo.co.uk> wrote:
> On 22/12/2013 19:17, Roy Smith wrote: > > In article <mailman.4500.1387739297.18130.python-l...@python.org>, > > Frank Cui <y...@outlook.com> wrote: > > > >> hey guys, > >> I have a requirement where I need to sequentially execute a bunch of > >> executions, each execution has a return code. the followed executions > >> should > >> only be executed if the return code is 0. is there a cleaner or more > >> pythonic > >> way to do this other than the following ? > >> if a() == 0: if b() == 0: c() > >> Thanks for your input. > >> frank > > > > Yup! Just do: > > > > a() or b() or c() > > > > The "or" operation has what's known as "short-circuit" semantics. That > > means, if the first operand is true, it doesn't evaluate the second > > operand. Just make sure that a(), b(), and c() all return something > > which is true if they succeed and false otherwise. > > > > Really? :) I believe what Mark is so elegantly trying to say is, "Roy is a dufus and got that backwards". You need to return something which is false to make the next one in the chain get executed. $ cat or.py def a(): print "a" return 0 def b(): print "b" return 1 def c(): print "c" return 0 a() or b() or c() $ python or.py a b -- https://mail.python.org/mailman/listinfo/python-list