尝试 - 除了未知的功能?

时间:2015-10-10 15:12:09

标签: python function python-3.x try-except

我试图创建一个函数来测试函数是否存在,然后根据它是否存在返回一个布尔值。

这是我的代码;但是,Python IDLE 3.5告诉我,我的eval()语句出错,但我不知道错误:

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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:5)

您的try声明错误。应该是 -

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

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

但是如果要检查简单函数(而不是内置函数或模块函数,如module.function),我会说最好使用globals()字典并在其中搜索,而不是使用{ {1}}。示例 -

eval()

请注意,以上内容不会返回def testFunction(entity): try: return callable(globals()[entity]) except KeyError: return False 内置函数或您访问的函数,如True等。如果您还需要测试这些函数,如果您信任来自您module.function的来源,您可以回退到使用entity