我正在设计一种工具,以递归方式识别向量河网络中的上游路径。如果累积路径成本通过用户定义的测试,我希望能够截断搜索,我不确定这是否可行。以下是我想做的事情的一个例子:
def test1(value):
if value > 1: return True
else: return False
def test2(value):
if value % 4: return True
else: return False
def main(test):
for i in range(20):
if SPECIFIEDTEST(i):
print i
break
main(test1)
我知道exec()可以用于此目的但我也明白这是不赞成的吗?是否有另一种更好的方法将函数传递给另一个函数?
答案 0 :(得分:4)
您可以创建一个将函数名称映射到实际函数的字典,并使用它:
tests = {'test1': test1, 'test2': test2}
if tests[specifiedtest](i):
...
答案 1 :(得分:4)
为此构建字典是不必要的,因为函数可以作为参数传递给其他函数。只需将该函数传递给main()
def test1(value):
if value > 1: return True
else: return False
def test2(value):
if value % 4: return True
else: return False
# using test1 as the default input value...
def main(test = test1):
for i in range(20):
if test(i):
print i
break
main(test1)
# prints 2
main(test2)
# prints 1