Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用参数动态运行函数_Python_Functional Programming - Fatal编程技术网

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)