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
.
我正在尝试创建一个函数来测试函数是否存在,然后 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
.