Python—动态调用模块中的函数

Python—动态调用模块中的函数,python,Python,我对Python非常陌生,有一种情况,我在模块中有一个表示函数的变量,我想知道如何动态调用它。我有过滤器。py: def scale(image, width, height): pass 然后在另一个脚本中,我有如下内容: import filters def process_images(method='scale', options): filters[method](**options) 。。。但这显然不起作用。如果有人能告诉我正确的方法,或者让我知道是否有更好的方

我对Python非常陌生,有一种情况,我在模块中有一个表示函数的变量,我想知道如何动态调用它。我有
过滤器。py

def scale(image, width, height):
    pass
然后在另一个脚本中,我有如下内容:

import filters

def process_images(method='scale', options):
    filters[method](**options)
。。。但这显然不起作用。如果有人能告诉我正确的方法,或者让我知道是否有更好的方法将函数作为参数传递,这将非常棒。

您需要内置:


为避免此问题,您可以直接传递函数,而不是“按名称传递”:

如果您有特殊的理由使用字符串,可以按照SilentGhost的建议使用
getattr

import filters

def process_images(function=filters.scale, options):
    function(**options)
这可以被称为,例如:

process_images(filters.rotate, **rotate_options)

请注意,使用默认函数arg似乎不是一个好主意——从直觉上看,为什么filters.scale是几种可能的图像处理操作中的默认值并不明显。

这应该是最好的答案
import filters

def process_images(function=filters.scale, options):
    function(**options)
process_images(filters.rotate, **rotate_options)