#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. Можете ли вы пояснить, зачем вам нужна такая степень самоанализа, в отличие от чего-то более простого, например, запуска функции и проверки ее типа вывода?