python function call with variable

Question:

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?
Asked By: pkdkk

||

Answers:

You could use the actual function objects themselves as keys, rather than the names of the functions. Functions are first class objects in Python, so it’s cleaner and more elegant to use them directly rather than their names.

test = {test:'blabla', test2:'blabla2'}

for key, val in test.items():
    key()
Answered By: John Kugelman

John has a good solution. Here’s another way, using eval():

def test():
        print 'test'

def test2():
        print 'test2'

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

Note that I changed the name of the dictionary to prevent a clash with the name of the test() function.

Answered By: chrisaycock
def test():
    print 'test'

def test2():
    print 'test2'

assign_list=[test,test2]

for i in assign_list:
    i()
Answered By: Surya
def test():
    print 'test'

def test2():
    print 'test2'

func_dict = {
    "test":test,
    "test2":test2
}


test = {'test':'blabla','test2':'blabla2'}
for key, val in test.items():
    func_dict[key]()
Answered By: Tangy_leprechaun
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.