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