Попробуйте - кроме неизвестной функции?
Я пытаюсь создать функцию, которая будет проверять, существует ли функция или нет, а затем возвращать логическое значение, основываясь на том, существует она или нет.
Вот мой код; Тем не менее, Python IDLE 3.5 говорит мне, что произошла ошибка с моим оператором eval(), но я не вижу, что не так:
def testFunction(entity):
try eval(entity)():
return True
except NameError:
return False
Может кто-нибудь помочь?
1 ответ
Ваш 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
Обратите внимание, что выше не вернется True
для встроенных функций или функций, к которым вы получаете доступ, как - module.function
и т. д. Если вам необходимо проверить их, и если вы доверяете источнику, откуда вы получаете entity
, вы можете вернуться к использованию eval
,