Implementation of StringFunction classes

Simple implementation:
class StringFunction_v1:
    def __init__(self, expression):
        self._f = expression

    def __call__(self, x):
        return eval(self._f)  # evaluate function expression
Problem: eval(string) is slow; should pre-compile expression
class StringFunction_v2:
    def __init__(self, expression):
        self._f_compiled = compile(expression, 
                                   '<string>', 'eval')

    def __call__(self, x):
        return eval(self._f_compiled)

previousnexttable of contents