Вы можете использовать eval
. Но прежде чем читать дальше, имейте в виду, что при использовании eval
может быть подвержен эксплойтам . Если у вас нет контроля над вводом (т. Е. Функцией), вам потребуется тройная проверка, чтобы выполнить соответствующие проверки работоспособности входной строки.
f = 'sin(2*pi*x)'
for x in [...]:
y = eval(f, {}, {'sin': np.sin, 'pi': np.pi, 'x': x})
Если вы можете определить некоторую структуру для функций ввода, лучше проанализировать строки напрямую, например, с помощью регулярных выражений, а затем вычислить результат. Но это зависит от того, что возможно в качестве входа.