繁体   English   中英

尝试 - 除了未知的功能?

[英]Try-except for unknown function?

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

这是我的代码; 但是,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是否是函数/类左右。


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

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

请注意,上面的内置函数或者你访问的函数(如module.function等)不会返回True 。如果你需要测试那些,如果你信任来自你获得entity的源,你可以回退使用eval

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM