Try-except 未知功能?

Try-except for unknown function?

我正在尝试创建一个函数来测试函数是否存在,然后 return 一个基于它是否存在的布尔值。

这是我的代码;但是,Python IDLE 3.5 告诉我我的 eval() 语句有错误,但我看不出有什么问题:

def testFunction(entity):
    try eval(entity)():
        return True
    except NameError:
        return False

有人可以帮忙吗?

您的 try 陈述是错误的。应该是-

def testFunction(entity):
    try: return callable(eval(entity))
    except NameError:
        return False

您也不需要调用该函数(以检查其是否可用)。上面使用内置函数 callable 来检查 entity 是否为 function/class 左右。


但是如果你正在检查简单的函数(而不是像 module.function 这样的内置函数或模块函数)我会说最好使用 globals() 字典并在其中搜索,而不是使用 eval() 。示例 -

def testFunction(entity):
    try: return callable(globals()[entity])
    except KeyError:
        return False

请注意,以上内容不会 return True 用于内置函数,或您访问的函数,如 - module.function 等。如果您需要测试这些函数好吧,如果您信任从那里获得 entity 的来源,您可以回退到使用 eval .