Hello,
I have a function with a long if/elif chain that sets a couple of
variables according to a bunch of test expressions, similar to function
branch1() below. I never liked that approach much because it is clumsy
and repetetive, and pylint thinks so as well. I've come up with two
alternatives which I believe are less efficient due to the reasons given
in the respective docstrings. Does anybody have a better idea?
def branch1(a, b, z):
"""Inelegant, unwieldy, and pylint complains
about too many branches"""
if a > 4 and b == 0:
result = "first"
elif len(z) < 2:
result = "second"
elif b + a == 10:
result = "third"
return result
def branch2(a, b, z):
"""Elegant but inefficient because all expressions
are pre-computed althogh the first one is most likely
to hit"""
decision = [
(a > 4 and b == 0, "first"),
(len(z) < 2, "second"),
(b + a == 10, "third")]
for (test, result) in decision:
if test: return result
def branch3(a, b, z):
"""Elegant but inefficient because expressions
need to be parsed each time"""
decision = [
("a > 4 and b == 0", "first"),
("len(z) < 2", "second"),
("b + a == 10", "third")]
for (test, result) in decision:
if eval(test): return result
(env) [dh@deham01in015:~/python/rscl_fdc/devel]$
--
https://mail.python.org/mailman/listinfo/python-list