Python动态运行带有参数的函数

17 浏览
0 Comments

Python动态运行带有参数的函数

我有一堆要导入和运行的模块。我使用Python中的动态模块导入来动态导入这些模块。这是在主代码中完成的。一旦导入,我尝试运行模块中的函数。\n所有的模块都具有以下结构:\n

#函数 foo
def run(a,b)
    c=a+b
    return c

\n已经导入了foo,我需要以动态方式执行类似于bar=foo.run(a,b)的操作。\n我已经尝试过以下方法:\n

i='foo'
bar = getattr(sys.modules[__name__], i+'.run()')(a,b)

\n回溯显示AttributeError: \'module\' object has no attribute \'foo.run()\'。\n我对这个属性错误感到困惑。动态调用函数的示例明显是在调用函数。

0
0 Comments

Python动态运行带参数的函数

在使用Python编程时,有时候我们需要根据不同的情况来动态运行带参数的函数。下面我们来看一下解决这个问题的原因和方法。

首先,我们有一个函数调用的语句the_module.run(a, b),其中the_module是一个模块对象,run是该模块中的一个函数。

无论这个模块是如何存在的,它都是一个普通的模块对象,拥有普通的属性。我们知道要调用的函数的名称是run

如果我们总是知道要使用的模块是foo,那么问题就解决了。

但是,如果需要根据不同的情况选择不同的模块,我们就需要动态地找到对应的模块对象。

如果我们正确导入了模块,并使用导入时使用的名称(例如foo)来引用它,那么我们可以使用sys.modules[mod_name]来找到对应的模块对象。

否则,我们可以创建一个模块字典,这样就可以通过the_module = modules[mod_name]来找到对应的模块对象。

这样,我们就可以根据不同的情况动态地运行带参数的函数了。

0
0 Comments

在Python中,有时候我们可能需要动态地运行一个函数,并且给它传递一些参数。然而,如果我们已经导入了一个函数,但是没有对它的引用,这时候该如何处理呢?

解决这个问题的方法是使用sys.modules模块。该模块可以让我们访问已经导入的模块。具体而言,我们可以使用sys.modules['foo'].run(a,b)来动态地运行名为foo的模块中的run函数,并传递参数ab

下面是示例代码:

import sys
sys.modules['foo'].run(a, b)

通过以上代码,我们可以动态地运行已经导入的foo模块中的run函数,并传递参数ab

这种方法允许我们在没有对函数的引用的情况下,动态地运行该函数并传递参数。这在某些特定的场景下非常有用,例如当我们需要根据用户的输入来决定调用哪个函数,或者在某些特定的条件下才执行某个函数等等。

,通过使用sys.modules模块,我们可以在Python中动态地运行一个函数,并且给它传递一些参数。这为我们带来了更大的灵活性和可扩展性。

0