Как выполнить проверку строки, представляющей функцию

#python

Вопрос:

Мне нужно проанализировать функцию, представленную в виде строки, чтобы извлечь и проверить определенную информацию.

Допустим, у меня есть строковое представление следующей функции:

 def my_function() -> Dict[str, str]:
    a = {"a": 1}
    return a
 

Если мне дана эта функция в виде строки, как я могу выполнить следующее:

  • Убедитесь, что возвращаемое значение функции представляет собой плоский дикт строк, т. е. Дикт[str, str]
  • Получите ключи словаря в возвращаемом значении в виде списка строк (в данном случае: [«a»])

Строковая функция может быть более сложной, чем та, которую я показываю в качестве примера. Возможно ли это?

Комментарии:

1. Вы можете использовать ast модуль для анализа кода, а затем обработать его.

2. Если функция не возвращает литерал словаря, вы не сможете проверить тип возвращаемого значения, фактически не запустив его.

3. Под «строковым представлением» вы подразумеваете, что у вас есть """def my_function() -> Dict[str, str]:n... ?

4. Итак, чтобы уточнить , поскольку a это не Dict[str, str] так, ваш анализ этого строкового представления должен делать что именно? Вызвать ошибку?

5. Можете ли вы пояснить, зачем вам нужна такая степень самоанализа, в отличие от чего-то более простого, например, запуска функции и проверки ее типа вывода?