Python使用参数动态运行函数
我有很多模块要导入和运行。我已经使用动态导入了模块。这在主代码中。导入后,我将尝试运行模块中的函数 所有模块都类似于此结构Python使用参数动态运行函数,python,functional-programming,Python,Functional Programming,我有很多模块要导入和运行。我已经使用动态导入了模块。这在主代码中。导入后,我将尝试运行模块中的函数 所有模块都类似于此结构 #function foo def run(a,b) c=a+b return c foo已经导入,我需要说一些类似于bar=foo.run(a,b)的话 从这个例子中: . 我已经尝试了以下方法: i='foo' bar = getattr(sys.modules[__name__], i+'.run()')(a,b) 回溯AttributeErro
#function foo
def run(a,b)
c=a+b
return c
foo
已经导入,我需要说一些类似于bar=foo.run(a,b)
的话
从这个例子中:
. 我已经尝试了以下方法:
i='foo'
bar = getattr(sys.modules[__name__], i+'.run()')(a,b)
回溯AttributeError:“module”对象没有属性“foo.run()”
我对属性错误感到困惑。动态调用函数的示例显然是调用函数
the_module.run(a, b)
不管是什么魔法使模块出现,它都是一个具有普通属性的普通模块对象,您知道该函数名为run
如果您总是知道要使用模块foo
,那么就完成了。
您可能还需要动态查找模块对象,因为要选择的模块各不相同。
如果正确导入了模块,则可以使用用于引用该模块的名称(例如foo
)而不是其他名称,也可以使用sys.modules[mod\u name]
。
否则,您可能应该有一个模块字典,这样您就可以说,the_module=modules[mod_name]
不管是什么魔法使模块出现,它都是一个具有普通属性的普通模块对象,您知道该函数名为run
如果您总是知道要使用模块foo
,那么就完成了。
您可能还需要动态查找模块对象,因为要选择的模块各不相同。
如果正确导入了模块,则可以使用用于引用该模块的名称(例如foo
)而不是其他名称,也可以使用sys.modules[mod\u name]
。
否则,您可能应该有一个模块字典,这样您就可以说,
the_module=modules[mod_name]
如果您已经导入了foo
,但没有对它的引用,请使用:
sys.modules['foo'].run(a,b)
如果您已经导入了
foo
,但没有引用,请使用:
sys.modules['foo'].run(a,b)