Python проверяет, существует ли функция без попытки

В python, как вы проверяете, существует ли функция без фактической работы функции (т.е. с помощью try)? Я бы тестировал, существует ли он в модуле.

Ответ 1

Вы можете использовать dir, чтобы проверить, находится ли имя в модуле:

>>> import os
>>> "walk" in dir(os)
True
>>>

В приведенном выше примере кода мы проверяем функцию os.walk.

Ответ 2

Вы предложили try except. Вы действительно можете использовать это:

try:
    variable
except NameError:
    print("Not in scope!")
else:
    print("In scope!")

Это проверяет, находится ли variable в области видимости (он не вызывает функцию).

Ответ 3

Solution1:
import inspect
if (hasattr(m, 'f') and inspect.isfunction(m.f))

Solution2:
import inspect
if ('f' in dir(m) and inspect.isfunction(m.f))

где:
m = имя модуля
f = функция, определенная в m