Python中的变量函数调用

时间:2014-02-25 17:40:22

标签: python recursion

我正在设计一种工具,以递归方式识别向量河网络中的上游路径。如果累积路径成本通过用户定义的测试,我希望能够截断搜索,我不确定这是否可行。以下是我想做的事情的一个例子:

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()可以用于此目的但我也明白这是不赞成的吗?是否有另一种更好的方法将函数传递给另一个函数?

2 个答案:

答案 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