我有一张地图:
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()
的情况下实现上述目标?
编辑:
我的问题与重复突出的重复问题不重复。我的问题被问到了不同的关键字,当我输入我的问题时,没有建议将重复的问题作为建议的答案。从技术上讲,两个问题都是相同的,但从自然语言的角度来看问题并不相同。
答案 0 :(得分:1)
尽管在创建foo变量时会调用
sky()
和ground()
以及tree()
,因为我知道为此变量对象分配了内存,因此执行了调用。
不,他们已执行,因为您是通过撰写sky()
来执行的。你想要的只是在dict中存储对函数的引用,然后再调用它:
foo_map = {'func1': sky, ...}
↑
foo_map[element]()
↑↑