Если вас не очень беспокоит безопасность, самое простое решение - eval
выражение, например,
def calculate(value, function):
x = value
return eval(function)
print calculate(2, "x**2 + 2*x + 1")
print calculate(2, "x**3 - x**2 + 1")
Выход:
9
5
Вы можете сделать его более безопасным, передав пустой builtin
dict, но все же я думаю, что какой-нибудь умный код сможет получить доступ к внутренним частям вашего кода.