带变量的python函数调用

python function call with variable

1
2
3
4
5
6
7
8
9
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?


您可以使用实际的函数对象本身作为键,而不是函数的名称。函数是Python中的第一类对象,因此直接使用它们比使用它们的名称更干净、更优雅。

1
2
3
4
test = {test:'blabla', test2:'blabla2'}

for key, val in test.items():
    key()


如果您想知道的是"当函数名在字符串中时如何调用函数",这里有一些好的答案-从字符串中调用模块的函数,函数名在python中


约翰有一个很好的解决办法。这是另一种方法,使用eval()

1
2
3
4
5
6
7
8
9
def test():
        print 'test'

def test2():
        print 'test2'

mydict = {'test':'blabla','test2':'blabla2'}
for key, val in mydict.items():
        eval(key+'()')

注意,我更改了字典的名称以防止与test()函数的名称冲突。


1
2
3
4
5
6
7
8
9
10
def test():
    print 'test'

def test2():
    print 'test2'

assign_list=[test,test2]

for i in assign_list:
    i()