2015-04-21 3 views
2

У меня есть два файлавызов определения с помощью переменной в Python

test_def.py 
def hi_test(a): 
    return a 

test_run.py

from test_def import hi_test 
a = 'hi' 
b = 'test' 
c = 'lion' 

run = "{0}_{1}".format(a, b) 
run1 = run(c) 
print run1 

это печать hi_test (лев) вместо выполнения/вызова функции DEF. Может ли кто-нибудь помочь в выполнении функции def?

+0

Я думаю, что это дубликат http://stackoverflow.com/questions/4246000/python-calling-functions-dynamically – Leon

ответ

2
import test_def 
a = 'hi' 
b = 'test' 
c = 'lion' 

run = "{0}_{1}".format(a, b) 
run1 = getattr(test_def, run)(c) 
print run1 
0

test_def.py

def hi_test(a): 
    print a 

test_run.py

from test_def import hi_test 

a = 'hi' 
b = 'test' 
c = 'lion' 

run = "{0}_{1}".format(a, b) 
exec("%s('%s')"%(run, c)) 

Хотя, первый ответ лучше

1

это может быть архив по следующему методу.

import test_def 
a = 'hi' 
b = 'test' 
c = 'lion' 

run = "{0}_{1}".format(a, b) 
run1 = getattr(test_def,run) 
run2 = run1(c) 
print run2 
Смежные вопросы