У меня есть список функций в виде строк:
["y + x + 3", "x**2 + y**2 - 17"] # 2 functions in list
У меня есть список Sympy Symbol
объектов (в основном, переменных), чей атрибут .name
соответствует именам переменных в строках функций:
[Symbol(x), Symbol(y)]
# list element 0's .name attribute is "x"
Я обнаружил, что в Python есть аккуратная функция с именем eval()
, которая может оценивать строки, например:
x = 1
eval("x + 3") # Result should be 4
По сути, это то, что я хочу делать со строками своих функций.Однако, поскольку это динамическая реализация, у меня в моей программе нет переменных, определенных в строке выше eval()
, они вместо этого находятся в списке.Например, в приведенном выше примере x определен как 1, поэтому функция eval()
может использовать его.
Но у меня есть переменные в списке, которые не определены как переменные в области действия моей функции. Как я могу использовать функцию eval()
и использовать свой список переменных?