python函数调用变量

时间:2010-12-13 16:50:36

标签: python

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?

4 个答案:

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