在Python中按变量名执行函数

2024-10-02 00:41:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要做的是循环遍历大量不同的文件并(尝试)从文件中获取元数据。

我可以做一个大的如果…伊里夫。。。对每个扩展进行测试,但我认为将扩展存储在变量中、检查是否存在具有该名称的函数并执行它会容易得多。

这是我当前的解决方案,取自另一个stackoverflow线程:

try:
    getattr(modulename, funcname)(arg)
except AttributeError:
    print 'function not found "%s" (%s)' % (funcname, arg)

有个问题: 如果基础函数引发AttributeRor,则这将注册为“找不到函数”错误。 我可以添加try…除了块到所有函数,但这也不是特别漂亮。。。

我要找的更像是:

if function_exists(fun):
  execute_function(fun, arg)

有没有直截了当的方法?

谢谢:-)


Tags: 文件数据函数名称argfunction解决方案stackoverflow
3条回答

就像@mouad说的,callable(function)可以调用函数。

可以使用此命令从变量内部调用函数,方法如下:

callable(SAVE())

这将调用指定为arg的函数。

要在变量中使用此项:

Save = callable(SAVE())

^{} function有一个可选的第三个参数,用于在属性不存在时返回默认值,因此可以使用该参数:

fun = getattr(modulename, funcname, None)

if fun is None:
    print 'function not found "%s" (%s)' % (funcname, arg)
else
    fun(arg)

你可以:

func = getattr(modulename, funcname, None):
if func:
    func(arg)

或者更好:

try:
    func = getattr(modulename, funcname)
except AttributeError:
    print 'function not found "%s" (%s)' % (funcname, arg)
else:
    func(arg)

相关问题 更多 >

    热门问题