内置的4个函数可以搞定
eval()
for func in func_list:
eval(func)()
locals()和globals()
>>> for func in func_list:
locals()[func]()
>>> for func in func_list:
globals()[func]()
getattr()
>>> import foo
>>> getattr(foo, 'bar')()
标准库operator下的methodcaller函数
>>> class Foo:
def do_foo(self):
print 1
def do_bar(self):
print 2
>>> f = Foo()
>>> from operator import methodcaller
>>> methodcaller('do_foo')(f)
问题来了,不在同一个模块怎么办?继续往下看
怎么动态导入模块
__import__
动态导入模块
moudle是包,file变量是要执行的文件,func是要执行的函数
sys.path.insert(0, './function') #目录(包的层级)太多,可以这样选择哪个包
#好处是他不会进入这个目录
moudle = __import__('{}.{}'.format(moudle, file))
func = '{}.{}.{}'.format('moudle',file, func)
res = eval(func)(param)