cascading python executions only if return code is 0
Roy Smith
roy at panix.com
Sun Dec 22 15:05:34 EST 2013
In article <mailman.4504.1387740695.18130.python-list at python.org>,
Mark Lawrence <breamoreboy at yahoo.co.uk> wrote:
> On 22/12/2013 19:17, Roy Smith wrote:
> > In article <mailman.4500.1387739297.18130.python-list at python.org>,
> > Frank Cui <ycui at 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
More information about the Python-list
mailing list