Я хотел бы знать, возможно ли, учитывая функцию (как экземпляр или строку), получить ее параметры, если определены значения по умолчанию для каждого параметра и, если возможно, тип каждого параметра (вероятно, использование типа значения по умолчанию, если оно определено) в Python 3.5.
Зачем тебе это?!
Короче говоря, я создаю файл XML, содержащий подробную информацию о различных функциях в моем проекте. Поскольку генератор должен быть ориентирован на будущее в случае, если кто-то модифицирует, добавляет или удаляет функцию, следующий сгенерированный файл должен быть обновлен. Я успешно получил нужные функции либо как экземпляр, либо как строка кода, вызывающего его.
У меня есть два решения (ну, больше начала решений), чтобы решить эту проблему, используя inspect
и jedi
.
Проверьте
Используя inspect.signature(function)
, я могу получить имя и значения по умолчанию для всех параметров. Основной проблемой, которую я вижу здесь, будет анализ этой функции:
def fct(a=None):
# Whatever the function does...
Анализ типа значения по умолчанию приведет к недоразумениям. Есть ли способ это исправить?
Джедай - чрезвычайно мощный инструмент, может быть, даже слишком много! Получение функции в виде строки кода в одну строку и ее анализ с помощью Jedi дает необычайное количество информации, с которой я теряюсь, если быть полностью честным. Кроме того, у меня может быть плохое автозаполнение (пример: вместо параметров 10 *, я могу получить автозаполнение до println
)
Если бы кто-то использовал один из этих инструментов для этой цели, или даже лучше, если вы знаете лучший, более "питонический" способ сделать это, я был бы очень благодарен!