def test():
print 'test'
def test2():
print 'test2'
test = {'test':'blabla','test2':'blabla2'}
for key, val in test.items():
key() # Here i want to call the function with the key name, how can i do so?
答案 0 :(得分:20)
您可以将实际的函数对象本身用作键,而不是函数的名称。函数是Python中的第一类对象,因此直接使用它们比使用它们更清晰,更优雅。
test = {test:'blabla', test2:'blabla2'}
for key, val in test.items():
key()
答案 1 :(得分:6)
如果你想知道的是“当你在一个字符串中有它的名字时如何调用一个函数”,这里有一些很好的答案 - Calling a function of a module from a string with the function's name in Python
答案 2 :(得分:3)
约翰有一个很好的解决方案。这是另一种方法,使用eval()
:
def test():
print 'test'
def test2():
print 'test2'
mydict = {'test':'blabla','test2':'blabla2'}
for key, val in mydict.items():
eval(key+'()')
请注意,我更改了字典的名称,以防止与test()
函数的名称发生冲突。
答案 3 :(得分:-1)
def test():
print 'test'
def test2():
print 'test2'
assign_list=[test,test2]
for i in assign_list:
i()