[EMAIL PROTECTED] wrote: > Ok, thx > But can I somehow determing how many outputs does caller func require? > for example: > MATLAB: > function [objFunVal firstDerive secondDerive] = simpleObjFun(x) > objFunVal = x^3; > if nargout>1 > firstDerive = 3*x^2; > end > if nargout>2 > secondDerive = 6*x; > end > > So if caller wants only > [objFunVal firstDerive] = simpleObjFun(15) > than 2nd derivatives don't must to be calculated with wasting cputime. > Is something like that in Python?
For a sequence whose items are to be calulated on demand you would typically use a generator in Python. You still have to provide the number of items somehow (see the head() helper function). from itertools import islice def derive(f, x0, eps=1e-5): while 1: yield f(x0) def f(x, f=f): return (f(x+eps) - f(x)) / eps def head(items, n): return tuple(islice(items, n)) if __name__ == "__main__": def f(x): return x**6 print head(derive(f, 1), 4) Peter -- http://mail.python.org/mailman/listinfo/python-list