Does Python have equivalent to MATLAB "varargin", "varargout", "nargin", "nargout"?

Robert Kern robert.kern at gmail.com
Mon Feb 19 11:08:57 EST 2007


openopt at ukr.net 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?

Return an object with each of the results objFunVal, firstDerive, and
secondDerive as attributes (or a dictionary). Use keyword arguments to inform
the function of which ancillary computations it needs to perform.

If at all possible, don't change the number of return values. It's annoying to
deal with such an API.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco




More information about the Python-list mailing list