尝试 - 除了未知的功能?

Ivy*_*Ivy 4 python function python-3.x try-except

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

这是我的代码; 但是,Python IDLE 3.5告诉我,我的eval()语句有错误,但我没有看到错误:

def testFunction(entity):
    try eval(entity)():
        return True
    except NameError:
        return False
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

Ana*_*mar 5

你的try陈述是错的.应该是 -

def testFunction(entity):
    try: return callable(eval(entity))
    except NameError:
        return False
Run Code Online (Sandbox Code Playgroud)

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


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

def testFunction(entity):
    try: return callable(globals()[entity])
    except KeyError:
        return False
Run Code Online (Sandbox Code Playgroud)

请注意,以上内容不会返回True内置函数或您访问的函数 - module.function等等.如果您还需要测试这些函数,并且如果您信任来源entity,则可以回退使用eval.