[Python-ideas] values in vs. values out
Rob Cliffe
rob.cliffe at btinternet.com
Thu Jan 13 15:56:13 CET 2011
To deal with specifically adding a new value to a returned tuple, you
could write your function calls to truncate the tuple to the expected
length, e.g.
def myfunc():
...
return (result1, result2, newresult)
x,y = myfunc()[2]
x,y,z = myfunc()[3]
So you would have to change all the relevant function calls, but only once.
More generally, perhaps you could return a dictionary. Although this
makes the function calls a bit more awkward:
results = myfunc()
x, y = results['result1'], results['result2']
Best wishes
Rob Cliffe
On 13/01/2011 14:30, Luc Goossens wrote:
> Hi all,
>
> There's a striking asymmetry between the wonderful flexibility in
> passing values into functions (positional args, keyword args, default
> values, *args, **kwargs, ...) and the limited options for processing
> the return values (assignment).
> Hence, whenever I upgrade a function with a new keyword arg and a
> default value, I do not have to change any of the existing calls,
> whereas whenever I add a new element to its output tuple, I find
> myself chasing all existing code to upgrade the corresponding
> assignments with an additional (unused) variable.
> So I was wondering whether this was ever discussed before (and
> recorded) inside the Python community.
> (naively what seems to be missing is the ability to use the assignment
> machinery that binds functions' formal params to the given actual
> param list also in the context of a return value assignment)
>
> cheers,
> Luc
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
>
More information about the Python-ideas
mailing list