"Jacob Rael" <[EMAIL PROTECTED]> writes: > Hello, > I would like write a function that I can pass an expression and a > dictionary with values. The function would return a function that > evaluates the expression on an input. For example: > > fun = genFun("A*x+off", {'A': 3.0, 'off': -0.5, 'Max': 2.0, 'Min': > -2.0} ) > >>>> fun(0) > -0.5 >>>> fun(-10) > -2 >>>> fun(10) > 2 > > so fun would act as if I did: > > def fun(x): > A = 3 > off = -0.5 > Max = 2 > Min = -2 > y = min(Max,max(Min,A*x + off)) > return(y) > > Any ideas?
>>> def genFun(expr, ns): ... def fun(x): ... newns = dict(ns) ... newns['x'] = x ... return eval(code, newns) ... code = compile("min(Max, max(Min, %s))" % expr, 'genFun', 'single') ... return fun Having said that, this is a *very* insecure thing to do. If you'd let us know why you want to do this, we might be able to suggest a safer way. <mike -- Mike Meyer <[EMAIL PROTECTED]> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list