使用string调用python中的导入函数

时间:2016-08-19 00:29:34

标签: python

我有一个导入函数名称列表,我可以调用如下:

from myfile import function1
from myfile import function2

function1()
function2()

如何从名单列表中调用函数?例如:

fns = ['function1', 'function2']
for fn in fns:
    fn()

我如何正确地完成上述工作?

2 个答案:

答案 0 :(得分:4)

不要使用字符串列表,只需将功能存储在列表中:

fns = [function1, function2]
for fn in fns:
    fn()

答案 1 :(得分:2)

您可以从globals()命名空间访问函数对象,但请注意,这不是一般方法,因为首先您的导入对象应该是可调用的(具有__call__属性)并且它们应该是出现在全球名称空间中。:

for fn in fns:
    try:
        globals()[fn]()
    except KeyError:
        raise Exception("The name {} is not in global namespace".format(fn))

示例:

>>> from itertools import combinations, permutations
>>> 
>>> l = ['combinations', 'permutations']
>>> for i in l:
...     print(list(globals()[i]([1, 2, 3], 2)))
... 
[(1, 2), (1, 3), (2, 3)]
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]