Python调用方法仅在迭代到列表期间按列表值

时间:2018-02-07 13:31:26

标签: python

我有一张地图:

foo_map = {
'func1': sky()
'func2': tree()
'fnuc3': ground()
}

我有foobar_list = ['func2', 'fnuc3']

我也有方法:

d

ef sky():
    print "sky"

def tree():
    print "tree"

def ground():
    print "ground"

我确实想做如下:

for element in foobar_list:
    foo_map[element]

预期的结果是在不调用'func2'的情况下调用分配给'fnuc3'tree()以及ground()sky()的方法。虽然在创建foo变量时会调用sky()ground()以及tree(),因为我知道为此变量对象分配了内存,因此执行了调用。

如何在不调用sky()的情况下实现上述目标?

编辑:

我的问题与重复突出的重复问题不重复。我的问题被问到了不同的关键字,当我输入我的问题时,没有建议将重复的问题作为建议的答案。从技术上讲,两个问题都是相同的,但从自然语言的角度来看问题并不相同。

1 个答案:

答案 0 :(得分:1)

  

尽管在创建foo变量时会调用sky()ground()以及tree(),因为我知道为此变量对象分配了内存,因此执行了调用。

不,他们已执行,因为您是通过撰写sky()来执行的。你想要的只是在dict中存储对函数的引用,然后再调用它:

foo_map = {'func1': sky, ...}
                       ↑
foo_map[element]()
                ↑↑