我试图创建一个函数来测试函数是否存在,然后根据它是否存在返回一个布尔值。
这是我的代码;但是,Python IDLE 3.5告诉我,我的eval()语句出错,但我不知道错误:
def testFunction(entity):
try eval(entity)():
return True
except NameError:
return False
有人可以帮忙吗?
答案 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
。